[Python-checkins] [3.6] bpo-25351: avoid activate failure on strict shells (GH-3804) (#3820)

Victor Stinner webhook-mailer at python.org
Fri Sep 29 08:34:45 EDT 2017


https://github.com/python/cpython/commit/a5610e07460a8df4b0923a32d37234cd535ec952
commit: a5610e07460a8df4b0923a32d37234cd535ec952
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Victor Stinner <victor.stinner at gmail.com>
date: 2017-09-29T05:34:43-07:00
summary:

[3.6] bpo-25351: avoid activate failure on strict shells (GH-3804) (#3820)

(cherry picked from commit 90f1d989594f3340c5ffaa2cf9cef1876ac6bb89)

files:
A Misc/NEWS.d/next/Library/2017-09-28-23-10-51.bpo-25351.2JmFpF.rst
M Lib/venv/scripts/common/activate

diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate
index c78a4efa153..fff0765af53 100644
--- a/Lib/venv/scripts/common/activate
+++ b/Lib/venv/scripts/common/activate
@@ -3,13 +3,13 @@
 
 deactivate () {
     # reset old environment variables
-    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
-        PATH="$_OLD_VIRTUAL_PATH"
+    if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
+        PATH="${_OLD_VIRTUAL_PATH:-}"
         export PATH
         unset _OLD_VIRTUAL_PATH
     fi
-    if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
-        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
+    if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
+        PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
         export PYTHONHOME
         unset _OLD_VIRTUAL_PYTHONHOME
     fi
@@ -17,12 +17,12 @@ deactivate () {
     # This should detect bash and zsh, which have a hash command that must
     # be called to get it to forget past commands.  Without forgetting
     # past commands the $PATH changes we made may not be respected
-    if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
+    if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
         hash -r
     fi
 
-    if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
-        PS1="$_OLD_VIRTUAL_PS1"
+    if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
+        PS1="${_OLD_VIRTUAL_PS1:-}"
         export PS1
         unset _OLD_VIRTUAL_PS1
     fi
@@ -47,15 +47,15 @@ export PATH
 # unset PYTHONHOME if set
 # this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
 # could use `if (set -u; : $PYTHONHOME) ;` in bash
-if [ -n "$PYTHONHOME" ] ; then
-    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
+if [ -n "${PYTHONHOME:-}" ] ; then
+    _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
     unset PYTHONHOME
 fi
 
-if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
-    _OLD_VIRTUAL_PS1="$PS1"
+if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
+    _OLD_VIRTUAL_PS1="${PS1:-}"
     if [ "x__VENV_PROMPT__" != x ] ; then
-	PS1="__VENV_PROMPT__$PS1"
+	PS1="__VENV_PROMPT__${PS1:-}"
     else
     if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
         # special case for Aspen magic directories
@@ -71,6 +71,6 @@ fi
 # This should detect bash and zsh, which have a hash command that must
 # be called to get it to forget past commands.  Without forgetting
 # past commands the $PATH changes we made may not be respected
-if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
+if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
     hash -r
 fi
diff --git a/Misc/NEWS.d/next/Library/2017-09-28-23-10-51.bpo-25351.2JmFpF.rst b/Misc/NEWS.d/next/Library/2017-09-28-23-10-51.bpo-25351.2JmFpF.rst
new file mode 100644
index 00000000000..f7afc2570aa
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-09-28-23-10-51.bpo-25351.2JmFpF.rst
@@ -0,0 +1 @@
+Avoid venv activate failures with undefined variables



More information about the Python-checkins mailing list