我有 Debian Gnu/Linux 11.3.0 64 位。在/etc/profile
文件中,我已将 PATH 变量定义为:
PATH="/usr/local/bin:/usr/bin:/bin:$HOME/.local/bin"
当我,
echo $PATH
结果显示,
/home/db/.local/bin
:/usr/local/bin:/usr/bin:/bin:
/home/db/.local/bin
路径/home/db/.local/bin
重复了。如果我从 PATH 变量中取出$HOME/.local/bin
,结果如预期:
/usr/local/bin:/usr/bin:/bin
这对我来说不是问题,只是好奇为什么$HOME/.local/bin
PATH 中的重复会回显?它只对 这样做$HOME/.local/bin
。如果我输入诸如/usr/loca/sbin
、/usr/sbin
、 之类的内容/opt
,它就不会这样做。
答案1
除了全局变量之外,你可能还有一个本地~/.profile
文件,该文件也将该$HOME/.local/bin
部分附加到环境变量中。例如,在我的 Debian 机器上,我的文件中有这么一段:PATH
/etc/profile
~/.profile
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
在搜索 时PATH
,将使用第一个匹配项。因此,~/.profile
确保用户的私有 bin 排在第一位是有意义的。否则,如果用户拥有/usr/local/bin
或中存在的二进制文件的自定义版本/usr/bin
,则不会使用自定义版本。