Linux shell配置文件
shell配置文件
常见的Linux发行版系统中,使用的shell的配置文件有多个,总的来说可以分为两类,全局配置文件和局部配置文件。
-
全局配置文件:针对有所用户都有效,默认位于/etc/目录下
-
局部配置文件:只针对特定的用户生效,默认位于用户的家目录(~/)下
每类配置文件,按照功能又可以分为profile类和bashrc类,profile类为 交互式登录 的shell提供配置,bashrc类是为非交互式登录的shell提供配置。
-
交互式登录shell:使用终端输入账号密码登录,在用户登录时启动的,例如通过 SSH登录。
-
非交互式登录shell:在用户已登录后启动的,例如在图形界面的终端模拟器中打开一个新终端。
除了交互式登录shell,还有非交互式shell,这一般是脚本执行时的环境。它不会读取配置文件。
配置文件分类
全局配置文件:
-
/etc/profile 和 /etc/profile.d/*.sh
-
/etc/bashrc
局部配置文件:
-
~/.bash_profile
-
~/.bashrc
配置文件执行顺序
如果是交互式登录shell
1、会先执行/etc/profile文件,因为/etc/profile文件中包含了对/etc/profile.d/的引用,所以如果该目录下不为空,会遍历目录下所有的 .sh 文件,并执行;
2、执行当前用户加目录下的局部配置文件,一般局部配置文件有三个,优先级从高到低分别是:(~/.bash_profile ~/.bash_login ~/.profile),只会执行这三个文件中的一个,
- 首先,检查 ~/.bash_profile 是否存在。如果存在,读取并执行该文件,然后停止,不再继续读取其他文件
- 如果 ~/.bash_profile 不存在,检查 ~/.bash_login 是否存在。如果存在,读取并执行这个文件,然后停止
- 如果 ~/.bash_profile 和 ~/.bash_login 都不存在,检查 ~/.profile。如果文件存在,就会读取并执行
3、退出shell时,会执行~/.bash_logout这个配置文件
如果是非登录式shell
只会执行~/.bashrc这个配置文件,
配置文件作用
-
profile类:设定环境变量、运行命令或脚本(登录时运行的脚本)
-
bashrc类 :设定本地变量、定义命令别名
例如:修改PATH变量的值一般就放在/etc/profile.d/下
当任何用户启动一个登录shell时,都会获得这些PATH修改
echo " export PATH=/usr/local/python3/bin:$PATH" > /etc/profile.d/python2.sh
# 生效:
source /etc/profile.d/python2.sh
例如:定义命令别名
可以直接在/etc/profile文件中添加
echo "alias mv = 'mv -i'" >> /etc/profile