对于普通用户我得到:
在 /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/monty/google_appengine
这实际上是/etc/environment
对于 root 我得到:
在 /usr/local/sbin 中:在 /usr/local/bin 中:在 /usr/sbin 中:在 /usr/bin 中:在 /sbin 中:在 /bin 中
这背后的原因是什么以及哪个文件包含此行?
答案1
PATH 是一个环境变量,因此当您更改环境时,它会“默认”或“重置”。请参阅以下 man sudoers
说明:
env_reset If set, sudo will reset the environment to only contain
the LOGNAME, SHELL, USER, USERNAME and the SUDO_* vari-
ables. Any variables in the caller's environment that
match the env_keep and env_check lists are then added.
The default contents of the env_keep and env_check
lists are displayed when sudo is run by root with the
-V option. If sudo was compiled with the SECURE_PATH
option, its value will be used for the PATH environment
variable. This flag is on by default.
在 /usr/local/sbin 中:在 /usr/local/bin 中:在 /usr/sbin 中:在 /usr/bin 中:在 /sbin 中:在 /bin 中
是未经修改的基本路径。出于多种原因,不同的用户会添加不同的目录。
理由应该是:root 的 PATH 中永远不应该有比需要更多的目录。或者反过来:如果 root 需要一个文件,它应该在 中/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
。您不会以 root 身份玩游戏。您不会以 root 身份使用桌面管理器。root 是用于管理任务的。
wiki 上有更多信息(其中包括哪些文件可用于添加到 PATH):https://help.ubuntu.com/community/EnvironmentVariables
答案2
对于普通用户来说,诸如~/.profile
、、~/.bash_profile
之类的文件~/.bashrc
可能会被添加到你的默认路径(该路径应该与你为 root 列出的路径相同)。
您可以检查其中任何一个文件(这些是我所知道的常见文件),查找如下行:
export PATH=$PATH:/usr/games:/usr/local/games:/home/monty/google_appengine
或者
export PATH=/usr/lib/lightdm/lightdm:$PATH
编辑
.bashrc
并且.profile
似乎有默认版本(/etc/profile/
和/etc/bash.basrhc
),/etc/
您可以检查它们以获取Root的路径。
此外,/root/
相当于。我希望该目录也包含文件、,这也有助于控制 的 $PATH 。/home/<username>
root
~/.profile
~/.bash_profile
~/.bashrc
root