linux下/etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile这四个配置文件的加载顺序

  • A+
所属分类:linux技术
摘要

1.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