[英]Default values of PATH variable
在整个Internet上搜索之后,我知道在交互式/非交互式-登录/非登录shell组合的情况下,哪里可以更改PATH变量的值。
从另一个帖子中找到
https://shreevatsa.wordpress.com/2008/03/30/zshbash-startup-files-loading-order-bashrc-zshrc-etc/
我将“ / bin / sh”作为默认登录外壳,并且仅使用/ etc / profile文件导出系统中所有需要的环境变量。 而且在非交互式登录shell的情况下,即使上面的链接表示也不会引用/ etc / profile。 但是当我执行时
ssh -4 -q -o StrictHostKeyChecking=no root@xxxx "env"
Password:
SHELL=/bin/sh
...
**PATH=/usr/bin:/bin:/usr/sbin:/sbin**
...
我可以看到一些PATH变量的默认值。 我想知道PATH的这些默认值到底在哪里设置的。
您完全不必关心在哪里设置了PATH
。 您应该始终在Shell启动文件( .profile
或.bashrc
)中设置PATH
。
这样,您就不会依赖别人很快就没用的假设,即PATH
应该包含哪些目录。 唯一知道的是你。
从开始
PATH=$(getconf PATH)
然后根据您的喜好添加
PATH=$PATH:$HOME/bin
PATH=$PATH:/usr/local/bin
PATH=$PATH:<...any other directory you need...>
PS:在您的特定情况下, PATH
似乎是从远端的SSH守护程序继承的,该守护程序最终会分叉您的Shell。 如果外壳程序没有从其父级继承PATH
,它将设置一个默认值,您可以使用env -i /bin/sh -c 'echo $PATH'
。
这取决于您的分布。 在Debian及其衍生版本中,定义位于/etc/environment
并且通过将pam_env.so
包含在适当的/etc/pam.d/
文件中而将其读入当前会话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.