gpt4 book ai didi

linux - 尝试了解 PATH 在 Linux 上的设置方式(Ubuntu 16.04 上的 bash)

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:05 28 4
gpt4 key购买 nike

<小时/>编辑

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

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

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

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

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

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

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

谢谢

最佳答案

这是我找到的关于该主题的最佳解释:Startup Files

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

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

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

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

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

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

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

关于linux - 尝试了解 PATH 在 Linux 上的设置方式(Ubuntu 16.04 上的 bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58647287/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com