shell脚本学习之路
一、shell配置文件执行顺序
在CentOS(以bash作为默认shell为例),shell配置文件的执行顺序取决于shell的启动方式(登录shell or 非登录shell、交互式 or 非交互式)
登出的时候才会把历史命令写到.bash_history里面
1.1. 登录shell(login shell)
触发场景:
通过ssh登录
使用
su - username(带-参数)在tty1~tty6终端直接登录
配置文件加载顺序:
/etc/profile
系统全局配置,设置环境变量(如PATH、USER等)。
/etc/profile.d/*.sh
加载/etc/profile.d/ 目录下的所有.sh脚本(按字母顺序)。
用户级配置文件(按优先级只加载一个):
~/.bash_profile(优先)~/.bash_login(如果.bash_profile不存在)~/.profile(如果前两者都不存在)
~/.bash_profile通常会显式加载~/.bashrc
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi/etc/bashrc退出时(logout)
~/.bash_logout如果存在
1.2. 非登录shell(Non-Login shell)
触发场景:
在终端直接运行
bash命令图形界面打开的终端
使用
su username(不带-参数)
配置文件加载顺序:
~/.bashrc
用户级配置(别名、函数、自定义提示符等)。
/etc/bashrc(部分系统可能是/etc/bash.bashrc)
系统级bash配置(通常由~/.bashrc显式加载)
不会运行profile文件,只执行.bashrc文件,.bashrc文件可能再执行一下/etc/bashrc
许可协议:
CC BY 4.0