是否可以找出正在设置/添加到环境变量的文件及其优先顺序?


9

我的一些环境变量(中$PATH$MANPATH和朋友)在不同的源文件是部分成立。

我发现自己希望有一种命令或方法来快速收集特定环境变量中的哪个部分来自哪个文件

我的$ PATH,例如,明显受到集(加入).bashrc/etc/paths/etc/paths.d/X11...我还在寻找这多余地在我创建重复的路径定义,最后的神秘文件$PATH

手动查明有助于环境变量的文件需要花费很多时间。必须有一种有用的方法来绕开跟踪所有设置者的不必要工作……或者我是唯一遵循这些思路的人吗?

Answers:


6

通常,PATH由登录您的程序(pam_env是常见的贡献者)以与系统高度相关的方式将其设置为初始值,然后/etc/profile~/.profile以及它们所包含的文件会继续修改该值。

删除任何对PATHin的更改.bashrc,环境设置不属于其中.bashrc:请参阅.bashrc和.bash_profile之间的区别

首先尝试以文本模式登录(例如使用ssh localhost),因为会话启动比图形模式简单得多。

set -x在年初/etc/profile~/.profile。外壳程序将在其标准错误流上打印出其行为的痕迹;PATH在跟踪中查找分配。

没有优先级分配环境变量的概念:谁分配了最后的胜利。


6

您可以在任何位置设置PATH,而不仅仅是在.bashrc文件中。您的系统很可能具有文件, /etc/profile并且/或者/etc/profile.local为系统上的所有用户设置了默认路径。如果用户特定的更改或添加.profile不在您的文件中,则可以在文件中进行设置.bashrc,或者您可能只是在系统上使用默认设置。

如果您想做出仅影响您的更改,请.profile使用以下格式将其放入您的帐户:

export PATH=/new/directory:$PATH

从而编辑当前路径,而不是完全重写它。

man bash(或here)的“ INVOCATION”部分说明了.profile和之间的区别.bashrc,等等,以及登录或启动Shell时读取的其他文件以及读取顺序。


1

不太可能存在用于此目的的机制。只要考虑一下在外壳中更改env变量的值有多少种方法。

您可能会有些运气set -x

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.