son*_*vis 17 command-line environment-variables
在 Mac OS X 上,默认$PATH值为:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
Linux 上的默认值是什么?
and*_*ing 20
在默认的 Ubuntu 桌面安装$PATH是:
$ echo $PATH
/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)
但是在由创建的最小 chroot 环境中debootstrap,$PATH只包含:
# echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)
shell 中有内置路径,即
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)
那么Ubuntu的默认路径是:
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)
bashPATH如果未在环境中设置,则将设置为硬编码的默认值:
$ env -i bash -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
Run Code Online (Sandbox Code Playgroud)
我们可以使用该strings实用程序检查该值是否确实是硬编码的,而不是从环境或某些文件中读取的:
$ strings /bin/bash | grep /usr/sbin
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
Run Code Online (Sandbox Code Playgroud)
但是,我在我的 Arch Linux 机器上得到了不同的结果:
$ env -i bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)
因此,看起来这个默认值是在bash构建二进制文件时选择的,这取决于所使用的 Linux 发行版。