繁体   English   中英

PATH变量的默认值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM