我的一些环境变量($PATH
以及$MANPATH
朋友)部分设置在不同的源文件中。
我发现自己希望有一个命令或方法来快速收集哪一部分,在特定的环境变量中,来自什么文件。
例如,我的 $PATH 显然已在.bashrc
, /etc/paths
, /etc/paths.d/X11
… 中设置(添加到),并且我仍在寻找最后一个神秘文件,该文件在我的$PATH
.
手动查明对环境变量有贡献的文件需要花费很长时间。一定有一种有用的方法来绕过追踪所有设置者的这种不必要的劳动……或者我是唯一一个这么想的人?
答案1
通常PATH
由登录的程序以高度依赖于系统的方式设置为初始值(pam_env
是一个共同的贡献者),然后/etc/profile
它们~/.profile
包含的文件继续修改该值。
PATH
删除对in 的任何更改.bashrc
,环境设置不属于.bashrc
: 请参阅.bashrc 和 .bash_profile 之间的区别。
首先尝试以文本模式登录(例如使用ssh localhost
),因为会话启动比图形模式简单得多。
放在andset -x
的开头。 shell 将在其标准错误流上打印其所做操作的跟踪信息;在跟踪中查找分配。/etc/profile
~/.profile
PATH
环境变量分配没有优先权的概念:最后分配的人获胜。
答案2
您的 PATH 可以设置在任何地方,而不仅仅是在 .bashrc 文件中。您的系统很可能有一个文件, /etc/profile
和/或/etc/profile.local
它为系统上的所有用户设置默认路径。如果用户特定的更改或添加不在您的文件中,则可能会在您的.profile
文件中进行设置.bashrc
,或者您可能只是使用系统上的默认值。
如果您想要进行仅影响您的更改,我会.profile
使用以下表格将它们放入您的中:
export PATH=/new/directory:$PATH
从而编辑当前路径而不是完全重写它。
(man bash
或这里.profile
) 解释了和.bashrc
等之间的区别,以及在您登录或启动 shell 时读取哪些其他文件以及读取的顺序。
答案3
不太可能存在这种机制。想想有多少种方法可以在 shell 中更改 env 变量的值。
不过,你可能会有一些运气set -x
。