Fix shell activation for zsh (#5795)
# Fix Shell Activation For ZSH
This PR resolves an issue wherein poetry will clear the `PATH` on zsh.
The activation script contains a number of if statements of the
following form:
```bash
# ...
if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH
unset _OLD_VIRTUAL_PATH
fi
```
These constructs are valid in bash, although zsh fails to negate the
conditional except when placed in emulation mode:
```zsh
# Causes PATH to be cleared, leading to other issues
. /home/alecto/.cache/pypoetry/virtualenvs/poetry-E-aAiPjf-py3.10/bin/activate
```
When bash is used as an emulator to source the script, it functions
correctly:
```zsh
# Functions correctly
emulate bash -c '. /home/alecto/.cache/pypoetry/virtualenvs/poetry-E-aAiPjf-py3.10/bin/activate'
```
It's important to note that this doesn't place the *entire* shell into
bash emulation mode; only the activate script is sourced as bash.
Any guidance on what tests should be added for this PR would be
appreciated.
Co-authored-by: Alecto Irene Perez <alecto.perez@voladynamics.com>
Co-authored-by: Bartosz Sokorski <b.sokorski@gmail.com>
Showing
Please
register
or
sign in
to comment