fix(zshenv): put ~/.local/bin on PATH for every zsh
Non-interactive agent shells (Codex, Claude) skip .zshrc and never saw user-local tools installed via pipx/uv/grok. Add ~/.local/bin in .zshenv with an idempotent guard, and source optional ~/.config/zshenv.local for machine-local early env.
This commit is contained in:
@@ -88,9 +88,19 @@ grep -Fq 'cp -Pp "$HOME/.zshenv"' "$ROOT/install.sh" || fail ".zshenv symlinks a
|
||||
grep -Fq '[ -L "$HOME/.zshenv" ]' "$ROOT/install.sh" || fail "broken .zshenv symlinks are not backed up"
|
||||
grep -Fq 'brew shellenv' "$ROOT/.zshenv" || fail "Homebrew is not initialized in .zshenv"
|
||||
grep -Fq '/usr/local/bin/brew' "$ROOT/.zshenv" || fail "Intel Homebrew path is missing from .zshenv"
|
||||
grep -Fq '$HOME/.local/bin' "$ROOT/.zshenv" || fail "~/.local/bin is not added in .zshenv"
|
||||
grep -Fq 'zshenv.local' "$ROOT/.zshenv" || fail "machine-local zshenv.local hook is missing"
|
||||
if grep -Fq 'brew shellenv' "$ROOT/.zshrc"; then
|
||||
fail "Homebrew still initializes from interactive-only .zshrc"
|
||||
fi
|
||||
# Non-interactive zsh must resolve ~/.local/bin without sourcing .zshrc.
|
||||
local_bin_home="$TEMP_DIR/local-bin-home"
|
||||
mkdir -p "$local_bin_home/.local/bin"
|
||||
printf '%s\n' '#!/bin/sh' 'echo ok' >"$local_bin_home/.local/bin/easyzsh-path-probe"
|
||||
chmod +x "$local_bin_home/.local/bin/easyzsh-path-probe"
|
||||
HOME="$local_bin_home" PATH=/usr/bin:/bin \
|
||||
zsh -c '. "$1"; command -v easyzsh-path-probe >/dev/null' zsh "$ROOT/.zshenv" ||
|
||||
fail "~/.local/bin is not available to non-interactive zsh via .zshenv"
|
||||
[[ ! -e "$ROOT/install/fnm.sh" ]] || fail "vendored fnm installer still exists"
|
||||
if grep -Eq '^[[:space:]]*export MLX_USER_TOKEN=' "$ROOT"/zshrc/*.zsh; then
|
||||
fail "a static MLX user token remains"
|
||||
|
||||
Reference in New Issue
Block a user