Linux环境变量的加载顺序

先上结论:

 /etc/profile -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

注: 后面的变量会覆盖前面顺序的变量

/etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等等。

/etc/bashrc :这个文件主要预设umask以及PS1。这个PS1就是我们在敲命令时,前面那串字符了,例如 [root@localhost ~]#,当bash shell被打开时,该文件被读取

二、用户环境变量

.bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。(在这个文件中有执行.bashrc的脚本)

.bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。

.bash_history :记录命令历史用的。

.bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中

关于变量的覆盖的实验:

   提前工作: 在/etc/profile文件新增 test_env变量   (注意 需要切换到root用户进行操作)

export test_env=/etc/profile

 然后再在 .bashrc 文件中也新增 test_env变量 

export test_env=~/.bashrc

最后使用如下命令使其生效

[admin@iZwz9eldxtlzr8azk280b7Z ~]$ source  /etc/profile
[admin@iZwz9eldxtlzr8azk280b7Z ~]$ source ~/.bashrc 

最后我们查看结果:test_env使用的是最后的 .bashrc里面的值

[admin@iZwz9eldxtlzr8azk280b7Z ~]$ echo $test_env
/home/admin/.bashrc

补充知识: login shell和non-login shell 

linux中的login shell和non-login shell重点解析_学无止境-CSDN博客_non-login shell

上一篇:nivek靶场-vulnhub


下一篇:A Child's History of England.110