PATH管理员(sudo组内用户)登录桌面环境后,Ubuntu(至少13.10)环境变量的默认值为:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)
/usr/local/sbin和/usr/local/bin出现在 /usr/sbin和/usr/bin 之前。但是,/usr/local/games出现在 /usr/games 之后。
是否有一个原因?或者这只是一个错字?
PATH登录后普通/管理员用户的默认值su - user:
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)普通/管理员用户PATH登录虚拟控制台后默认:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)默认PATH为root用户(与测井后sudo -i,我还没有尝试过使在根用户和记录通过虚拟控制台):
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)内容的/ etc /环境:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Run Code Online (Sandbox Code Playgroud)/etc/sudoers 的相关行:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Run Code Online (Sandbox Code Playgroud)/etc/login.defs 的相关行:
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)重复主要问题:默认情况下,/usr/local/games出现在/usr/games之后而不是之前的原因是PATH什么?
还有一个相关的问题:价值PATH从何而来?似乎/etc/environment和/etc/login.defs都用于不同的情况。
除了:这是一个错误之外,我想不出任何理由。
据我所知,/usr/local/games这是一个相当晚的补充/etc/environment。我的12.04机器没有这个。
我真的很努力地寻找/etc/environment来自哪里。事实证明,它不是打包的文件,而是在安装时创建的(我认为是为了防止它在升级过程中损害现有配置)。感谢Unix.SE 上的这个答案,我们可以看到它来自 的libpam-modules脚本postinst。
# Add PATH to /etc/environment if it's not present there or in
# /etc/security/pam_env.conf
if [ "$1" = "configure" ] && dpkg --compare-versions "$2" lt 1.1.3-7ubuntu3; then
if ! grep -qs ^PATH /etc/security/pam_env.conf; then
if ! grep -qs ^PATH= /etc/environment; then
echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"' >> /etc/environment
elif ! grep -qs "^PATH=.*/usr/local/games" /etc/environment; then
sed -i '/^PATH=/ s,:/usr/games,:/usr/games:/usr/local/games,g' /etc/environment
fi
fi
fi
Run Code Online (Sandbox Code Playgroud)
所以是的,我建议报告针对 pam 的错误。
| 归档时间: |
|
| 查看次数: |
8151 次 |
| 最近记录: |