bash的配置文件主要分为两类,1.profile类,2.bashrc类。其中profile类主要为交互式的shell提供配置文件,bashrc类主要为非交互式的shell提供配置文件。下面首先介绍一下哪些是交互式shell,哪些是非交互式shell。
交互式shell
1.直接通过某个终端输入用户名密码登录的shell 2.使用su - username或者su -l username登录的shell
非交互式shell
1.su username执行的用户切换 2.图形界面下打开的终端 3.运行脚本时启动的shell
profile类和bashrc类
两类都包含全局配置文件和用户个人的配置文件,全局配置文件对所有用户有效,用户个人配置文件只对当前的用户有效
profile类
全局配置文件: /etc/profile /etc/profile.d/*.sh 用户个人配置文件: ~/.bash_profile 以上几个配置文件功用: 定义环境变量 运行命令或脚本
bashrc类
全局配置文件: /etc/bashrc 用户个人配置文件: ~/.bashrc 以上几个配置文件的功用: 定义本地变量 定义命令别名
注: 只有管理员有权限修改全局配置文件
交互式shell登录读取配置文件的顺序:
/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式shell读取配置文件的顺序:
/.bashrc --> /etc/bashrc --> /etc/profile.d/*
在命令行中定义的特性,比如变量或者别名,仅对当前的shell生效,当前shell进程终止,定义的特性即失效。而在配置文件中定义的特性,只对新启动的shell进程有效,对当前的shell进程不生效。若想让配置文件中的修改立即生效,需要让shell进程重读配置文件,方法如下:
1.[root@fox ~]# source /etc/profile 2.[root@fox ~]# . /etc/profile