Files
easyzsh/.zshenv
T
Frank Qing 34d11b5aa4 fix(shell): restore always-on PATH after macOS path_helper
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.
2026-09-07 22:07:58 +08:00

52 lines
1.9 KiB
Bash

# Always-on env for every zsh (interactive, login, agents, zsh -c).
# Safe to re-source: macOS login shells run this again from ~/.zprofile after
# path_helper reorders PATH. Machine-local overrides: ~/.config/zsh/local.zsh.
typeset -U path
# Homebrew (macOS). cd /tmp so TCC-protected CWDs do not break brew shellenv.
# Skip when already initialized (login re-apply, nested zsh).
if [[ -z "$HOMEBREW_PREFIX" ]]; then
if [[ -x /opt/homebrew/bin/brew ]]; then
eval "$(cd /tmp && /opt/homebrew/bin/brew shellenv)"
elif [[ -x /usr/local/bin/brew ]]; then
eval "$(cd /tmp && /usr/local/bin/brew shellenv)"
fi
fi
# User-local binaries (pipx, uv tools, grok shim, …).
# Do not put vendor trees like ~/.grok/bin on PATH wholesale (names like `agent` shadow tools).
if [[ -d "$HOME/.local/bin" ]]; then
path=("$HOME/.local/bin" ${path:#$HOME/.local/bin})
export PATH
fi
# Always-on tool fragments (~/.config/zsh/*.zsh). local.zsh is sourced last so it wins.
ZSH_ALWAYS_ON_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
if [[ -d "$ZSH_ALWAYS_ON_DIR" ]]; then
for f in "$ZSH_ALWAYS_ON_DIR"/*.zsh(N); do
[[ ${f:t} == local.zsh ]] && continue
# shellcheck disable=SC1090
. "$f"
done
fi
# Cursor owns `agent` when installed. Grok is only ~/.local/bin/grok.
# Grok's installer also writes ~/.local/bin/agent and may prepend ~/.grok/bin.
_easyzsh_agent=
[[ -L $HOME/.local/bin/agent ]] && _easyzsh_agent=$(readlink $HOME/.local/bin/agent)
if [[ -x $HOME/.local/bin/cursor-agent ]]; then
if [[ ! -e $HOME/.local/bin/agent || $_easyzsh_agent == *'/.grok/'* ]]; then
ln -sfn $HOME/.local/bin/cursor-agent $HOME/.local/bin/agent
fi
elif [[ -L $HOME/.local/bin/agent && $_easyzsh_agent == *'/.grok/'* ]]; then
rm -f $HOME/.local/bin/agent
fi
unset _easyzsh_agent
path=(${path:#$HOME/.grok/bin})
if [[ -f "$ZSH_ALWAYS_ON_DIR/local.zsh" ]]; then
# shellcheck disable=SC1090
. "$ZSH_ALWAYS_ON_DIR/local.zsh"
fi