我在我的主目录中安装了 eclipse,并将其路径PATH
放入~/.profile
.
因此它的工作原理是
$ eclipse
但是当用 , 调用它时sudo
,eclipse
没有找到:
$ sudo eclipse
sudo: eclipse: command not found
哪个PATH
用来sudo eclipse
搜索eclipse
?是用户root
的吗PATH
?
谢谢。
答案1
sudo
默认情况下使用最小的 PATH
,以使其安全使用根用户。这不一定与PATH
您通过登录获得的结果相同根用户,或者通过做
sudo su -
例如,在较新的 Red Hat 版本中,我注意到路径省略了/usr/local/bin
.
手册页在题为“安全说明:
sudo 在执行外部命令时尝试确保安全。
有两种不同的方法来处理环境变量。默认情况下,
env_reset
sudoers 选项已启用。这会导致在包含以下内容的最小环境中执行命令TERM
,PATH
,HOME
,SHELL
,LOGNAME
,USER
和USERNAME
env_check
除了和sudoers 选项允许的调用过程中的变量之外env_keep
。实际上有一个环境变量白名单。
进一步阅读:
-
secure_path
从 sudo 运行的每个命令所使用的路径。如果您不相信运行 sudo 的人有一个正常的 PATH 环境变量,您可能需要使用它。另一个用途是如果您希望将“根路径”与“用户路径”分开。指定组中的用户exempt_group
选项不受secure_path
。默认情况下未设置此选项。