From 90f1d989594f3340c5ffaa2cf9cef1876ac6bb89 Mon Sep 17 00:00:00 2001 From: Sorin Sbarnea Date: Fri, 29 Sep 2017 12:48:11 +0100 Subject: bpo-25351: avoid activate failure on strict shells (GH-3804) --- Lib/venv/scripts/common/activate | 26 +++++++++++----------- .../2017-09-28-23-10-51.bpo-25351.2JmFpF.rst | 1 + 2 files changed, 14 insertions(+), 13 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2017-09-28-23-10-51.bpo-25351.2JmFpF.rst diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate index c78a4ef..fff0765 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 0000000..f7afc25 --- /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 -- cgit v0.12