sudo时命令不存在原因排查
现象
使用一些命令, 比如 usermod, root和sudo都不能执行, 报错找不到命令, 但命令确实存在于 /usr/sbin:/sbin
原因
命令解析时机
当运行 sudo echo $PATH 时,发生的是:
- **Shell 先展开
$PATH**(在当前shell环境中) - 然后执行
sudo echo [已经展开的PATH]
所以实际上看到的是当前shell的PATH,而不是sudo执行时的PATH。
验证真实情况
1 | # 这个显示的是当前shell的PATH(不包含/usr/sbin) |
解决
对于root用户,修复方法不变:
1 | # 永久修复root的PATH |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Juice's Blog!





