我刚刚安装去到/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