linux下/etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile这四个配置文件的加载顺序
一.关于linux配置文件
1.linux下主要有四个配置文件:/etc/profile 、/etc/bashrc 、/root/.bashrc 、/root/.bash_profile。
- /etc/profile 设置的是系统全局环境和登录系统的一些配置,该配置对所有用户生效;
- /etc/bashrc 是shell 全局自定义配置文件,主要用于自定义 shell,该配置对所有用户的shell都生效;
- /root/.bashrc 用于单独自定义root用户的 bash,只对root用户的bash生效,如果要使elk用户生效,则需要配置/home/elk/.bashrc文件;
- /root/.bash_profile 用于单独自定义root用户的系统环境,只对root用户生效,如果要使elk用户生效,则需要配置/home/elk/.bash_profile。
2./etc/profile 、/etc/bashrc这两个配置文件是全局配置文件,对所有用户生效;/username/.bashrc 、/username/.bash_profile是局部
配置文件,只对单个用户生效。
3.举个最简单的例子:一个项目中需要你配置java环境,如果java环境只是elk用户用到,其他用户压根用不到,此时就把java环境配置
在/home/elk/.bash_profile里;但是如果你这个项目是java web项目,所有的服务都是基于java环境的,此时你就需要把java配置
到/etc/profile里面,省得去每个用户下面配置;如果elk用户想对自己的一些常规操作设置别名,但是又不想影响别人,就可以把别名设
置在/home/elk/.bashrc里面;如果系统管理员想设置bash的代码补全,bash的颜色,并且对所有的用户生效,则需要配置
在/etc/bashrc里面
二.验证四个配置文件的加载顺序
1.现在就衍生出一个问题,当我们登录系统或者系统开机时,这四个配置文件的加载顺序是怎样的?
2.解题思路:在这四个配置文件的末尾追加一行"echo "this is ****"",然后登录系统,看echo输出顺序就知道四个配置文件的加载顺序了。
3.现在开始证明,以root用户为例:
#在每个配置文件末尾追加echo "this is *****"
[root@node5 ~]# echo "echo "this is /etc/profile"" >> /etc/profile
[root@node5 ~]# echo "echo "this is /etc/bashrc"" >> /etc/bashrc
[root@node5 ~]# echo "echo "this is /root/.bashrc"" >> /root/.bashrc
[root@node5 ~]# echo "echo "this is /root/.bash_profile"" >> /root/.bash_profile
#现在断开连接,使用root用户登录系统
Connection closed.
Disconnected from remote host(node5) at 10:23:38.
Type `help' to learn how to use Xshell prompt.
[c:\~]$
Connecting to 192.168.110.184:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Mon Dec 14 09:14:27 2020 from 192.168.110.1
this is /etc/profile
this is /etc/bashrc
this is /root/.bashrc
this is /root/.bash_profile
三.结论
从2.3步的输出不难看出,当登录系统或者新开启一个 ssh连接启动 bash 进程时,这四个配置文件的加载顺序如下:
- /etc/profile > /etc/bashrc > /root/.bashrc > /root/.bash_profile
致力于一条龙式的为您解决问题