什么是默认的 $PATH 值?

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)


Bra*_*iam 8

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)


Avi*_*Raj 7

环境路径值存储在 ubuntu 的.bashrc文件中。

系统范围的 PATH 变量定义在 /etc/environment


Vla*_*eev 6

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 发行版。

  • 这是唯一提到 shell 和发行版的答案。我偶然发现了这个问题,因为我正在解决 ubuntu 容器中的 PATH 问题。“默认路径”将取决于 shell(bash、sh 等)以及它是否以交互方式加载,以及它是否是登录 shell。这不是一个简单的答案。感谢提及二进制文件中的硬编码字符串。 (2认同)