与sudo一起使用时找不到某些程序

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

sudo命令在sudoers文件中有env_keepenv_reset参数。

您必须编辑env_keep设置或使用sudo -E

只需按键盘上的Ctrl + Alt + T即可打开终端。 打开时,运行以下命令。

 sudo ln -s /usr/local/go/bin/go /usr/bin/go 

编辑文件/ etc / sudoers。 将所需路径添加到以下行:

默认值为secure_path = / sbin:/ bin:/ usr / sbin:/ usr / bin

例:

默认值为secure_path = / sbin:/ bin:/ usr / sbin:/ usr / bin:/ usr / local / sbin:/ usr / local / bin

通过以下命令检查是否为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