在linux中,shell中的bash的配置文件分为俩类:profile类和bashrc类,他们分别定义了bash工作的一些特性。

    按功能划分:

    profile类:

       --->  /etc/profile  /etc/profile.d./sh ~/.bash_profile

       用于定义环境变量

       开机执行的脚本

    bashrc类       

       --->  /etc/bashrc  ~/.bashrc       

       用于定义本地变量 

       命令别和名函数

    当然,这只是使用中默认的规则定义,也完全可以不这样安排。



    

    有时候,我们需要设定某些特定给某些用户,而不是对全部用户生效,所以这些文件也就分为了全局配置和个人配置

    按生效范围划分:

    全局配置:

        /etc/profile

        /etc/profile.d/*.sh

        /etc/bashrc

    个人配置:

        ~/.bash_profile

        ~/.bashrc



   

    这些配置文件在我们登陆的时候会重读,但是登陆的方式不同,其读取的文件的也不尽相同  

        交互式登录:

        (1)直接通过终端输入账号密码登录;

        (2)使用“su - UserName”切换的用户

        执行顺序:

        /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile--> ~/.bashrc--> /etc/bashrc

        非交互式登录:

        (1)suUserName

        (2)图形界面下打开的终端

        (3)执行脚本

        执行顺序:

        ~/.bashrc--> /etc/bashrc--> /etc/profile.d/*.sh



    

    从上面可以看出,非交互式登陆系统时,是不会读取/etc/profile和~/bash_profile这俩个配置文件的,所以定义在其中的特性也不会生效。

当然,这些配置文件如果不想通过登陆的方式来使其生效,也可以通过source FILE或者. FILE的方式来重读,文件也会生效。

非交互式登陆,是不会切换工作目录和所有的配置文件的。交互式登陆才会全部切换过来。




示例:

1、既然profile类文件定义了命令脚本,那么我们在/etc/.bash_profile中写一个仅对root用户生效的脚本

[root@centos7~]#vim .bash_profile
echo -e "\033[31m--------If you are not root, Proceed with caution.----------\033[0m"
[root@centos7~]#su root    # 非交互式登陆,没有重读.bash_profile
[root@localhost ~]# exit
exit
[root@centos7~]#su - root    # 交互式登陆,读取
Last login: Sun Aug 28 15:51:53 CST 2016 on pts/0
--------If you are not root, Proceed with caution.----------    #验证

2、linux下任何一个二进制文件要想运行都必须在一个路径下,不管是./COMMAND或者写在了PATH变量之中后,直接执行COMMAND。所以新安装的程序,要使用其二进制文件,要么在其指定路径下执行,要么将其路径卸载PATH环境变量中(/etc/profil、/etc/profile.d/*.sh、~/.bash_profile)。