PATH
Ubuntu(13.10以上)中,管理员(组中用户sudo
)登录桌面环境后,环境变量的默认值为:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
在/usr/local/sbin 中和在/usr/本地/bin出现前 /usr/sbin和/usr/bin。 然而,/usr/local/游戏出现后 /usr/游戏。
这有什么原因吗?还是只是打字错误?
更多信息
普通/管理员用户
PATH
登录后的默认设置su - user
:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
普通/管理员用户
PATH
登录虚拟控制台后的默认设置:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PATH
用户默认root
(使用登录后sudo -i
;我还没有尝试启用 root 用户并通过虚拟控制台登录):/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
内容/etc/环境:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
相关行/etc/sudoers:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
相关行/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
重复主要问题:原因是什么/usr/local/游戏出现在之后/usr/游戏,而不是之前,在默认的PATH
?
还有一个相关的问题:的价值从何PATH
而来?似乎/etc/环境和/etc/login.defs在不同情况下使用。
答案1
我除了“这是一个错误”之外,想不出任何理由。
据我所知,/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
是的,我建议报告针对 pam 的错误。