M1 Mac下zsh执行ping命令提示“command not found”求助
问题重现
执行ping命令时出现报错:
zsh: command not found: ping
当前echo $PATH输出:
/Users/jlangr/opt/anaconda3/envs/b39/bin:/usr/local/include:/usr/local/cuda-11.2/bin:/usr/local/opt/icu4c/sbin:/usr/local/opt/icu4c/bin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/jlangr/.local/bin:/Users/jlangr/miniconda3/bin:/miniconda3/bin:/Users/jlangr/bin:/usr/local/bin:/Users/jlangr/opt/anaconda3/bin:/Users/jlangr/opt/anaconda3/condabin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbineval
解决思路与步骤
1. 验证ping命令本身是否存在
M1 Mac的ping默认在/sbin目录下,手动指定路径执行确认:
/sbin/ping -c 3 8.8.8.8
如果能正常输出结果,说明命令本身没问题,问题出在PATH配置。
2. 修复PATH中的无效路径
观察你的PATH输出,末尾的/sbineval是明显的配置错误,正确路径应为/sbin。按以下步骤修正:
- 打开zsh的配置文件(常见为
~/.zshrc、~/.zprofile或~/.bash_profile) - 搜索包含
PATH的行,找到错误的/sbineval,替换为/sbin
3. 重新加载配置文件
修改后执行命令让配置生效:
source ~/.zshrc
若修改的是其他配置文件,替换对应文件名即可。
4. 验证并测试
重新查看PATH确认/sbin已正确加入:
echo $PATH
然后直接执行ping测试:
ping 8.8.8.8
额外排查点
如果上述步骤无效,可检查:
- 系统完整性保护(SIP)是否异常修改了
/sbin目录权限(M1 Mac默认开启SIP,一般不会出现此问题) - 是否有全局配置文件(如
/etc/zshrc)覆盖了个人PATH设置
内容的提问来源于stack exchange,提问作者Jakub Langr

