什么是默认$ PATH值?


Answers:


18

在默认的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

但在由创建的最小chroot环境中debootstrap$PATH仅包含:

# echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin


3

外壳中内置了路径

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

然后,Ubuntu的默认路径是:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

3

有一个简单的方法可以找出:

printenv

或者,更直接地:

echo $PATH

但是,如果您只是在寻找一些快速信息,Ubuntu通常会将路径设置为:

/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / bin / X11:/ usr / games:

对于此类问题,通常可以通过阅读圣经来找出答案。


2

根据您使用的Linux,它可能有所不同。如果您已经登录到Linux,只需键入“ env”以查看您的环境变量。

如果您想知道如何构建PATH env变量,请查看主目录中的.bashrc和.bash_profile。如果更好奇,还可以查看/etc/profile、/etc/profile.d / *(如果存在)和bash手册(man bash)。


2

bashPATH如果未在环境中设置,则将设置为硬编码默认值:

$ env -i bash -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

我们可以使用该strings实用程序来检查该值是否确实是硬编码的,而不是从环境或某些文件中读取的:

$ strings /bin/bash | grep /usr/sbin
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

但是,我在Arch Linux机器上得到了不同的结果:

$ env -i bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/bin

因此,看起来好像是在bash构建二进制文件时选择了该默认值,这取决于所使用的Linux发行版。


这是唯一提到shell和发行版的答案。我偶然发现了这个问题,因为我正在整理ubuntu容器中的PATH问题。而“默认路径”将取决于外壳程序(bash,sh等),是否以交互方式加载以及是否为登录外壳程序。这不是一个简单的答案。在二进制文件中提到硬编码字符串的荣誉。
init_js '19

1

要查看默认路径,请使用答案中提到的其他路径:

echo $PATH

编辑使用:

gedit ~/.bashrc

此默认PATH变量在下定义/etc/enviroment

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.