先上结论:
/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