重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
zsh-path-skill by julianobarbosa/claude-code-skills
npx skills add https://github.com/julianobarbosa/claude-code-skills --skill zsh-path-skill本技能提供在 zsh 中管理 PATH 环境变量的全面指导,包括排查命令缺失问题、添加新工具以及组织 shell 配置。
在以下情况时使用此技能:
# 列出所有 PATH 条目
echo $PATH | tr ':' '\n'
# 检查特定命令是否在 PATH 中
which bun 2>/dev/null || echo "bun not found in PATH"
# 查找命令安装位置
command -v node
type -a python
# 检查损坏/不存在的 PATH 条目
echo $PATH | tr ':' '\n' | while read p; do
[[ -d "$p" ]] || echo "MISSING: $p"
done
# 检查重复的 PATH 条目
echo $PATH | tr ':' '\n' | sort | uniq -d
# 添加到 .zshrc
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
默认位置:~/.bun/bin/bun
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
# 添加到 .zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
默认位置:~/.nvm/
注意: NVM 是一个 shell 函数,不是二进制文件。它会动态修改 PATH 以指向活动的 Node 版本。
# 为全局工具 venv 添加到 .zshrc
export PATH="$HOME/.venv/tools3/bin:$PATH"
# 对于 pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# 添加到 .zshrc
export PATH="$HOME/.cargo/bin:$PATH"
# 添加到 .zshrc
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
# Intel Mac
export PATH="/usr/local/bin:$PATH"
# Apple Silicon Mac
export PATH="/opt/homebrew/bin:$PATH"
eval "$(/opt/homebrew/bin/brew shellenv)"
# 用户本地二进制文件
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/bin:$PATH"
保留在 .zshrc 中:
Oh My Zsh 配置
常用团队别名
标准 PATH 添加项(homebrew、本地 bin)
插件配置
export PATH="$HOME/.local/bin:$PATH" export PATH="$HOME/bin:$PATH"
export BUN_INSTALL="$HOME/.bun" export PATH="$BUN_INSTALL/bin:$PATH"
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local
保留在 .zshrc.local 中:
机器特定的 PATH 条目
个人工具配置
实验性设置
可能覆盖键绑定的集成
export PATH="/opt/custom-tool/bin:$PATH"
if command -v atuin >/dev/null 2>&1; then eval "$(atuin init zsh)" fi
PATH 从左到右搜索。第一个匹配项胜出。
# 此顺序意味着 ~/.local/bin 优先于系统二进制文件
export PATH="$HOME/.local/bin:/usr/local/bin:/usr/bin:/bin"
~/.local/bin、~/bin)/usr/local/bin、/usr/bin)# 1. 查找工具安装位置
ls -la ~/.bun/bin/bun 2>/dev/null
ls -la ~/.cargo/bin/rustc 2>/dev/null
ls -la ~/.nvm/versions/node/*/bin/node 2>/dev/null
# 2. 检查 PATH 是否包含该目录
echo $PATH | tr ':' '\n' | grep -E "(bun|cargo|nvm)"
# 3. 将缺失的 PATH 条目添加到 .zshrc
# 4. 重新加载 shell
source ~/.zshrc
# 或
exec $SHELL
# 检查哪个文件设置了变量
grep -r "export PATH" ~/.zshrc ~/.zshrc.local ~/.zprofile 2>/dev/null
# 加载正确的文件
source ~/.zshrc
# 或启动新的 shell
exec $SHELL
常见原因:
钩子中使用的工具缺少 PATH 条目
对不存在目录的损坏引用
版本管理器找不到预期版本
zsh -x 2>&1 | head -100
bash -n ~/.zshrc
# 移除重复项(添加到 .zshrc)
typeset -U PATH path
进行 PATH 更改后:
# 重新加载配置
source ~/.zshrc
# 验证工具是否可访问
which bun && bun --version
which node && node --version
command -v nvm && nvm --version
# 验证 PATH 是否包含新条目
echo $PATH | tr ':' '\n' | grep -E "(bun|nvm|venv)"
| 工具 | PATH 条目 | 检查命令 |
|---|---|---|
| bun | $HOME/.bun/bin | bun --version |
| nvm | $NVM_DIR/versions/node/*/bin | nvm --version |
| cargo | $HOME/.cargo/bin | cargo --version |
| go | $GOPATH/bin | go version |
| pyenv | $PYENV_ROOT/bin | pyenv --version |
| brew (ARM) | /opt/homebrew/bin | brew --version |
| brew (Intel) | /usr/local/bin | brew --version |
# 仅当目录存在时添加
[[ -d "$HOME/.bun/bin" ]] && export PATH="$HOME/.bun/bin:$PATH"
# 仅当命令尚不可用时添加
command -v bun >/dev/null || export PATH="$HOME/.bun/bin:$PATH"
# 延迟加载 nvm(加速 shell 启动)
lazy_load_nvm() {
unset -f nvm node npm npx
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
}
nvm() { lazy_load_nvm && nvm "$@"; }
node() { lazy_load_nvm && node "$@"; }
npm() { lazy_load_nvm && npm "$@"; }
npx() { lazy_load_nvm && npx "$@"; }
每周安装次数
54
仓库
GitHub 星标数
39
首次出现
2026年1月24日
安全审计
安装于
opencode48
cursor46
codex46
gemini-cli45
github-copilot42
claude-code40
This skill provides comprehensive guidance for managing PATH environment variables in zsh, including troubleshooting missing commands, adding new tools, and organizing shell configuration.
Use this skill when:
# List all PATH entries
echo $PATH | tr ':' '\n'
# Check if specific command is in PATH
which bun 2>/dev/null || echo "bun not found in PATH"
# Find where a command is installed
command -v node
type -a python
# Check for broken/non-existent PATH entries
echo $PATH | tr ':' '\n' | while read p; do
[[ -d "$p" ]] || echo "MISSING: $p"
done
# Check for duplicate PATH entries
echo $PATH | tr ':' '\n' | sort | uniq -d
# Add to .zshrc
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
Default location: ~/.bun/bin/bun
# Add to .zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Default location: ~/.nvm/
Note: NVM is a shell function, not a binary. It modifies PATH dynamically to point to the active Node version.
# Add to .zshrc for global tools venv
export PATH="$HOME/.venv/tools3/bin:$PATH"
# For pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Add to .zshrc
export PATH="$HOME/.cargo/bin:$PATH"
# Add to .zshrc
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
# Intel Mac
export PATH="/usr/local/bin:$PATH"
# Apple Silicon Mac
export PATH="/opt/homebrew/bin:$PATH"
eval "$(/opt/homebrew/bin/brew shellenv)"
# User-local binaries
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/bin:$PATH"
Keep in .zshrc:
Oh My Zsh configuration
Common team aliases
Standard PATH additions (homebrew, local bin)
Plugin configuration
export PATH="$HOME/.local/bin:$PATH" export PATH="$HOME/bin:$PATH"
export BUN_INSTALL="$HOME/.bun" export PATH="$BUN_INSTALL/bin:$PATH"
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local
Keep in .zshrc.local:
Machine-specific PATH entries
Personal tool configurations
Experimental settings
Integrations that may override keybindings
export PATH="/opt/custom-tool/bin:$PATH"
if command -v atuin >/dev/null 2>&1; then eval "$(atuin init zsh)" fi
PATH is searched left-to-right. First match wins.
# This order means ~/.local/bin takes priority over system bins
export PATH="$HOME/.local/bin:/usr/local/bin:/usr/bin:/bin"
~/.local/bin, ~/bin)/usr/local/bin, /usr/bin)# 1. Find where tool was installed
ls -la ~/.bun/bin/bun 2>/dev/null
ls -la ~/.cargo/bin/rustc 2>/dev/null
ls -la ~/.nvm/versions/node/*/bin/node 2>/dev/null
# 2. Check if PATH includes the directory
echo $PATH | tr ':' '\n' | grep -E "(bun|cargo|nvm)"
# 3. Add missing PATH entry to .zshrc
# 4. Reload shell
source ~/.zshrc
# or
exec $SHELL
# Check which file sets the variable
grep -r "export PATH" ~/.zshrc ~/.zshrc.local ~/.zprofile 2>/dev/null
# Source the correct file
source ~/.zshrc
# Or start fresh shell
exec $SHELL
Common causes:
Missing PATH entries for tools used in hooks
Broken references to non-existent directories
Version managers not finding expected versions
zsh -x 2>&1 | head -100
bash -n ~/.zshrc
# Remove duplicates (add to .zshrc)
typeset -U PATH path
After making PATH changes:
# Reload configuration
source ~/.zshrc
# Verify tool is accessible
which bun && bun --version
which node && node --version
command -v nvm && nvm --version
# Verify PATH includes new entries
echo $PATH | tr ':' '\n' | grep -E "(bun|nvm|venv)"
| Tool | PATH Entry | Check Command |
|---|---|---|
| bun | $HOME/.bun/bin | bun --version |
| nvm | $NVM_DIR/versions/node/*/bin | nvm --version |
| cargo | $HOME/.cargo/bin | cargo --version |
| go | $GOPATH/bin |
# Only add if directory exists
[[ -d "$HOME/.bun/bin" ]] && export PATH="$HOME/.bun/bin:$PATH"
# Only add if command not already available
command -v bun >/dev/null || export PATH="$HOME/.bun/bin:$PATH"
# Lazy load nvm (faster shell startup)
lazy_load_nvm() {
unset -f nvm node npm npx
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
}
nvm() { lazy_load_nvm && nvm "$@"; }
node() { lazy_load_nvm && node "$@"; }
npm() { lazy_load_nvm && npm "$@"; }
npx() { lazy_load_nvm && npx "$@"; }
Weekly Installs
54
Repository
GitHub Stars
39
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode48
cursor46
codex46
gemini-cli45
github-copilot42
claude-code40
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
125,600 周安装
go version |
| pyenv | $PYENV_ROOT/bin | pyenv --version |
| brew (ARM) | /opt/homebrew/bin | brew --version |
| brew (Intel) | /usr/local/bin | brew --version |