perf(pyenv): initialize shell integration once without rehash

Login shells source the fragment twice to restore shim precedence after the system profile. Reapplying PATH does not require repeating shell integration or rebuilding shims.
This commit is contained in:
Yuhao Qing
2026-09-08 00:41:08 +08:00
parent 82c6a57c3a
commit d5afd25bbe
2 changed files with 24 additions and 2 deletions
+4 -2
View File
@@ -3,6 +3,8 @@ export PYENV_ROOT="${PYENV_ROOT:-$HOME/.pyenv}"
[[ -d "$PYENV_ROOT/bin" ]] && path=("$PYENV_ROOT/bin" ${path:#$PYENV_ROOT/bin})
[[ -d "$PYENV_ROOT/shims" ]] && path=("$PYENV_ROOT/shims" ${path:#$PYENV_ROOT/shims})
export PATH
if [[ -o interactive ]] && command -v pyenv &> /dev/null; then
eval "$(pyenv init - zsh)"
# Login profiles can reapply PATH without repeating shell integration.
# Run `pyenv rehash` after installing entry points through `python -m pip`.
if [[ -o interactive ]] && (( ! $+functions[pyenv] )) && command -v pyenv &> /dev/null; then
eval "$(pyenv init - --no-rehash zsh)"
fi