Fix $PWD changes when executing Python

Specifically, this does not play well with PWD=/proc/self/cwd
This commit is contained in:
Zach Riggle 2017-11-13 15:12:13 -06:00
parent eef042ad89
commit 19e2b9588a
4 changed files with 18 additions and 13 deletions

View file

@ -36,9 +36,10 @@ else
}
abs_dirname() {
local cwd="$PWD"
local path="$1"
# Use a subshell to avoid changing the current path
(
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
@ -46,7 +47,7 @@ else
done
pwd
cd "$cwd"
)
}
fi
@ -72,11 +73,13 @@ fi
if [ -z "${PYENV_DIR}" ]; then
PYENV_DIR="$PWD"
else
cd "$PYENV_DIR" 2>/dev/null || abort "cannot change working directory to \`$PYENV_DIR'"
PYENV_DIR="$PWD"
cd "$OLDPWD"
fi
if [ ! -d "$PYENV_DIR" ] || [ ! -e "$PYENV_DIR" ]; then
abort "cannot change working directory to \`$PYENV_DIR'"
fi
PYENV_DIR=$(cd "$PYENV_DIR" && echo "$PWD")
export PYENV_DIR

View file

@ -37,10 +37,10 @@ resolve_link() {
}
realpath() {
local cwd="$PWD"
local path="$1"
local name
# Use a subshell to avoid changing the current path
(
while [ -n "$path" ]; do
name="${path##*/}"
[ "$name" = "$path" ] || cd "${path%/*}"
@ -48,7 +48,7 @@ realpath() {
done
echo "${PWD}/$name"
cd "$cwd"
)
}
fi

View file

@ -44,10 +44,11 @@ if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; th
}
realpath() {
local cwd="$PWD"
local path="$1"
local name
# Use a subshell to avoid changing the current path
(
while [ -n "$path" ]; do
name="${path##*/}"
[ "$name" = "$path" ] || cd "${path%/*}"
@ -55,7 +56,7 @@ if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; th
done
echo "${PWD}/$name"
cd "$cwd"
)
}
fi

View file

@ -60,9 +60,10 @@ resolve_link() {
}
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
# Use a subshell to avoid modifying the current path
(
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
@ -70,7 +71,7 @@ abs_dirname() {
done
pwd
cd "$cwd"
)
}
capitalize() {