为什么 /usr/local/games 在默认路径中的 /usr/games 之后?

7 environment-variables

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 之后

是否有一个原因?或者这只是一个错字?

更多信息


重复主要问题:默认情况下,/usr/local/games出现在/usr/games之后而不是之前的原因是PATH什么?

还有一个相关的问题:价值PATH从何而来?似乎/etc/environment/etc/login.defs都用于不同的情况。

Oli*_*Oli 5

除了:这是一个错误之外,我想不出任何理由。

据我所知,/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 的错误

  • @BrunoNova 我的 Debian 的顺序是正确的,所以应该是 Ubuntu 特有的。 (2认同)