`sudo <command>` 使用哪个 PATH 来搜索 `<command>`?

Tim*_*Tim 5 sudo path

我在我的主目录中安装了 eclipse,并将其路径PATH放在~/.profile.

所以它的工作原理

$ eclipse 
Run Code Online (Sandbox Code Playgroud)

但是当用 调用它时sudoeclipse没有找到:

$ sudo eclipse 
sudo: eclipse: command not found
Run Code Online (Sandbox Code Playgroud)

PATHsudo eclipse用于搜索eclipse?是用户rootPATH吗?

谢谢。

Tho*_*key 7

sudo默认情况下使用最小的 PATH, 以使其安全供root用户使用。这不一定与以root用户PATH身份登录或执行以下操作所获得的相同

sudo su -
Run Code Online (Sandbox Code Playgroud)

例如,在较新的 Red Hat 版本中,我注意到路径省略了/usr/local/bin.

手册页在标题为“安全说明”的部分中对此进行了总结:

sudo 在执行外部命令时尽量保证安全。

有两种不同的方式来处理环境变量。默认情况下,env_resetsudoers 选项处于启用状态。这导致命令与一个含有最小的环境中执行TERMPATHHOMESHELLLOGNAMEUSERUSERNAME除了从调用过程变量允许通过env_checkenv_keepsudoers的选项。环境变量有一个有效的白名单。

进一步阅读: