试图理解 PATH 是如何在 Linux 上设置的(在 Ubuntu 16.04 上)



>


编辑

我的问题的答案实际上很明显,我只是忘记了 EXPORT 关键字的含义。为了以防万一,我仍然在这里放弃解释。

因此,简而言之,当使用 Ctrl-Alt T 打开终端时,会创建一个新的 shell,它是在 loggin 创建的 shell 的子级。正如这里所解释的,loggin shell 是通过读取/etc/profile来初始化的,正如这里所解释的,更具体地说,环境的元素被传输到子进程,特别是以 EXPORT 关键字为前缀的变量。


我试图了解打开新(虚拟)终端时在 linux 下设置PATH的机制是什么。

我知道可以更改多个文件中的PATH(例如系统:/etc/{profile,bash.bashrc,...}或用户:~/{.profile,.bash_login,.bashrc... },其中一些在登录时读取,其他在打开新的(虚拟)终端时读取。

根据我的测试,似乎">配置文件"文件是在启动时(当用户登录时)读取的,这会为变量(例如PATH)注册一些启动值。然后,每次打开终端时,这些启动值都会提供给其他脚本(例如bashrc)进行进一步配置,结果如下:PATH_IN_TERMINAL=$BASHRC_ADDONS:$PATH_FROM_PROFILE

值得注意的是,登录后通常不会读取~/.profile。更改此文件在当前会话中不会产生任何影响,并且PATHPATH_FROM_PROFILE部分将保持不变,直到再次登录(例如注销后或通过 ssh 连接)。

我说的对吗?如果是这样,我在哪里可以找到有关该主题的文档?

谢谢

这是我在这个主题上找到的最好的解释: 启动文件

在最常见的情况下,简单的解释是:

  1. 首次登录到主机后,请阅读/etc/profile,然后阅读第一个~/.bash_profile~/.bash_login~/.profile~/.profile是 由多个外壳支持,所以是首选。

  2. 当 Bash 启动时,但不是在登录后立即,请阅读~/.bashrc

因此,profile文件旨在在登录时运行,并应用于打印初始消息(例如安全警告,每日消息),检查邮件以及配置很少更改的设置/变量。系统范围(配额、MOTD 等)或用户特定(时区、区域设置、终端等)。

.bashrc文件旨在供个人用户自定义其交互式体验。 例如定义别名、设置提示、添加到 PATH 等。

我几乎总是在.profile文件的末尾添加source ~/.bashrc,以便我的 shell 始终根据我的要求进行自定义,即使在登录后立即也是如此。

注意:以上仅适用于交互式外壳(例如在终端上运行)。如果 bash 以非交互方式运行(例如通过cron),则不会读取这些文件。在这些情况下,您应该创建一个包含所需变量的不同文件,并通过BASH_ENV环境文件指定该文件。

相关内容

  • 没有找到相关文章