一、shell配置文件执行顺序

在CentOS(以bash作为默认shell为例),shell配置文件的执行顺序取决于shell的启动方式(登录shell or 非登录shell、交互式 or 非交互式)

登出的时候才会把历史命令写到.bash_history里面

1.1. 登录shell(login shell)

触发场景:

  • 通过ssh登录

  • 使用su - username(带 - 参数)

  • tty1~tty6终端直接登录

配置文件加载顺序:

  1. /etc/profile

系统全局配置,设置环境变量(如PATHUSER等)。

  1. /etc/profile.d/*.sh

加载/etc/profile.d/ 目录下的所有.sh脚本(按字母顺序)。

  1. 用户级配置文件(按优先级只加载一个):

  • ~/.bash_profile (优先)

  • ~/.bash_login (如果.bash_profile不存在)

  • ~/.profile (如果前两者都不存在)

  1. ~/.bash_profile 通常会显式加载 ~/.bashrc

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi
  1. /etc/bashrc

  2. 退出时(logout)

  • ~/.bash_logout 如果存在

1.2. 非登录shell(Non-Login shell)

触发场景:

  • 在终端直接运行bash命令

  • 图形界面打开的终端

  • 使用 su username (不带 -参数)

配置文件加载顺序:

  1. ~/.bashrc

用户级配置(别名、函数、自定义提示符等)。

  1. /etc/bashrc(部分系统可能是/etc/bash.bashrc

系统级bash配置(通常由~/.bashrc显式加载)

不会运行profile文件,只执行.bashrc文件,.bashrc文件可能再执行一下/etc/bashrc