在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用户生效的脚本
[[email protected]~]#vim .bash_profile echo -e "\033[31m--------If you are not root, Proceed with caution.----------\033[0m" [[email protected]~]#su root # 非交互式登陆,没有重读.bash_profile [[email protected] ~]# exit exit [[email protected]~]#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)。