path_helper runs after ~/.zshenv in login shells and puts Homebrew ahead of fnm, pyenv, and ~/.local/bin. Re-source ~/.zshenv from ~/.zprofile and make prepends idempotent so login and zsh -c resolve the same binaries.
31 lines
1.1 KiB
Bash
31 lines
1.1 KiB
Bash
# fnm (Fast Node Manager) — always-on via ~/.zshenv
|
|
FNM_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/fnm"
|
|
[[ -d "$FNM_PATH" ]] && path=("$FNM_PATH" ${path:#$FNM_PATH})
|
|
|
|
if command -v fnm &> /dev/null; then
|
|
_easyzsh_fnm_state="${XDG_STATE_HOME:-$HOME/.local/state}/fnm_multishells"
|
|
_easyzsh_fnm_ready=0
|
|
if [[ -n "$FNM_MULTISHELL_PATH" && -d "$FNM_MULTISHELL_PATH/bin" ]] \
|
|
&& [[ "$FNM_MULTISHELL_PATH" == "$_easyzsh_fnm_state/"* || "$FNM_MULTISHELL_PATH" == "$FNM_PATH/"* ]]; then
|
|
if [[ ! -o interactive ]] || (( $+functions[_fnm_autoload_hook] )); then
|
|
_easyzsh_fnm_ready=1
|
|
fi
|
|
fi
|
|
if (( _easyzsh_fnm_ready )); then
|
|
path=("$FNM_MULTISHELL_PATH/bin" ${path:#$FNM_MULTISHELL_PATH/bin})
|
|
else
|
|
_easyzsh_fnm_prev="$FNM_MULTISHELL_PATH"
|
|
if [[ -o interactive ]]; then
|
|
eval "$(fnm env --use-on-cd --shell zsh)"
|
|
else
|
|
eval "$(fnm env --shell zsh)"
|
|
fi
|
|
if [[ -n "$_easyzsh_fnm_prev" ]]; then
|
|
path=(${path:#$_easyzsh_fnm_prev/bin})
|
|
fi
|
|
unset _easyzsh_fnm_prev
|
|
fi
|
|
unset _easyzsh_fnm_ready _easyzsh_fnm_state
|
|
fi
|
|
export PATH
|