繁体   English   中英

试图了解如何在 linux 上设置 PATH(Ubuntu 16.04 上的 bash)

[英]Trying to understand how the PATH is set on linux (bash on Ubuntu 16.04)


编辑

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

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


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

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

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

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

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

谢谢

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

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

  1. 初次登录主机时,先阅读/etc/profile ,然后阅读~/.bash_profile~/.bash_login~/.profile中的第一个。 ~/.profile由多个 shell 支持,因此是首选。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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