AI 摘要(由 ChatGPT 总结生成):
Linux环境变量的调用过程涉及多个文件的加载顺序。系统级配置包括`/etc/environment`、`/etc/profile`和`/etc/bashrc`,分别用于设置整个系统的环境、每个用户的登录环境以及所有用户的bash初始化环境。用户级配置涵盖`~/.profile`、`~/.bashrc`和`~/.bash_profile`或`~./bash_login`,用于定制个人工作环境、bash shell信息以及交互式登录时的bash运行设置。这些文件的作用和加载顺序对系统和用户的环境变量起到关键作用。

Linux 配置环境变量的几个文件的加载顺序。

/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

相关调用如图所示:

系统环境变量调用过程.png

其中,几个文件的作用如下:

系统级

1、 /etc/environment:是系统在登录时读取的第一个文件,该文件设置的是整个系统的环境,只要启动系统就会读取该文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入一行形如 PATH=$PATH:/xxx/bin的代码即可。

2、 /etc/profile:此文件是系统登录时执行的第二个文件。 为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。(/etc/profile可以用于设定针对全系统所有用户的环境变量,环境变量周期是永久性)。

3、 /etc/bashrc:是针对所有用户的bash初始化文件,在此中设定的环境变量将应用于所有用户的shell中,此文件会在用户每次打开shell时执行一次。(即每次新开一个终端,都会执行/etc/bashrc)。

用户级

注:这些文件皆处于家目录下

1、 ~/.profile:对应当前登录用户的profile文件,用于定制当前用户的个人工作环境(变量是永久性),每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方。

2、 ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。(~/.bashrc只针对当前用户,变量的生命周期是永久的)。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定有影响。

3、 ~/.bash_profile or ~./bash_login是交互式login 方式进入 bash 运行的,~/.bashrc 是交互式 non-login 方式进入 bash 运行的,通常二者设置大致相同,所以通常前者会调用后者。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。(如果用户家目录下没有.bash_profile则新建立一个,这里是推荐放置个人设置的地方。)当一个shell关闭时,在.bash_profile中定义的系统变量则会失效。因此,每打开一个新的shell时都要运行一次source .bash_profile,且只针对当前用户。

4、 ~/.pam_environment:用户级的环境变量设置文件,该文件此处未做测试。

5、 ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。另外/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系。

End

本文标题:Linux环境变量调用过程

本文链接:https://www.isisy.com/1179.html

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

如果觉得我的文章对你有用,请随意赞赏