![使用 sudo 时找不到某些程序](https://linux22.com/image/816008/%E4%BD%BF%E7%94%A8%20sudo%20%E6%97%B6%E6%89%BE%E4%B8%8D%E5%88%B0%E6%9F%90%E4%BA%9B%E7%A8%8B%E5%BA%8F.png)
我刚刚安装去到/usr/local/go
,并在 中~/.bashrc
添加以下行:
export PATH=$PATH:/usr/local/go/bin
现在go
可以从命令行工作,但是sudo go
给我:
$ sudo go
sudo: go: command not found
~
$ sudo echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/benjamin/algs4/bin:/usr/local/go/bin
答案1
sudo
命令在文件中有env_keep
和env_reset
参数。sudoers
您必须编辑您的 env_keep 设置或使用sudo -E
。
答案2
编辑文件 /etc/sudoers。将所需路径添加到以下行:
默认 secure_path = /sbin:/bin:/usr/sbin:/usr/bin
例子:
默认 secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
答案3
使用以下命令检查您是否已为 PATH 设置了安全策略:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
如果是这样,请禁用它或将其添加到那里sudo visudo
。
看:为什么通过 sudo 和 su 运行时 PATH 变量不同?在Unix SE