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生效,如果要使zstack用户生效,则需要配置/home/zstack/.bashrc文件;
  • ? /root/.bash_profile 用于单独自定义root用户的系统环境,只对root用户生效,如果要使zstack用户生效,则需要配置/home/zstack/.bash_profile。

2./etc/profile 、/etc/bashrc这两个配置文件是全局配置文件,对所有用户生效;/username/.bashrc 、/username/.bash_profile是局部

配置文件,只对单个用户生效。

3.举个最简单的例子:一个项目中需要你配置java环境,如果java环境只是zstack用户用到,其他用户压根用不到,此时就把java环境配置

在/home/zstack/.bash_profile里;但是如果你这个项目是java web项目,所有的服务都是基于java环境的,此时你就需要把java配置

到/etc/profile里面,省得去每个用户下面配置;如果elk用户想对自己的一些常规操作设置别名,但是又不想影响别人,就可以把别名设

置在/home/zstack/.bashrc里面;如果系统管理员想设置bash的代码补全,bash的颜色,并且对所有的用户生效,则需要配置

在/etc/bashrc里面

二.验证四个配置文件的加载顺序

1.现在就衍生出一个问题,当我们登录系统或者系统开机时,这四个配置文件的加载顺序是怎样的?

2.思路:在这四个配置文件的末尾追加一行"echo "this is ****"",然后登录系统,看echo输出顺序就知道四个配置文件的加载顺序了。

3.现在开始证明,以root用户为例:

[root@ceph-1 ~]# echo "echo "this is /etc/profile"" >> /etc/profile
[root@ceph-1 ~]# echo "echo "this is /etc/bashrc"" >> /etc/bashrc 
[root@ceph-1 ~]# echo "echo "this is /root/.bashrc"" >> /root/.bashrc 
[root@ceph-1 ~]# echo "echo "this is /root/.bash_profile"" >> /root/.bash_profile 
[root@ceph-1 ~]# exit
logout

Last login: Thu Feb 18 14:26:15 2021 from 172.21.1.48
this is /etc/profile
this is /etc/bashrc
this is /root/.bashrc
this is /root/.bash_profile
[root@ceph-1 ~]# 
[root@ceph-1 ~]# 
 

三.结论

从2.3步的输出不难看出,当登录系统或者新开启一个 ssh连接启动 bash 进程时,这四个配置文件的加载顺序如下:

  • ? /etc/profile > /etc/bashrc > /root/.bashrc > /root/.bash_profile

showtooltip

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

上一篇:Linux下删除乱码文件及文件夹


下一篇:linux基础