核心概念
Login Shell 和 Non-login Shell
| 类型 | 触发场景 | 特点 |
|---|---|---|
| Login Shell | 1. 通过tty登录 2. su - username3. SSH远程登录 4. bash --login
|
需要输入用户名和密码的完整登录会话。 |
| Non-login Shell | 1. 图形界面打开终端 2. su username (不带-)3. 执行脚本 4. 终端中再启动bash |
不需要重新认证的会话。 |
配置文件加载顺序
Login Shell 加载流程
# 1. 全局配置 (所有用户生效)
/etc/profile
└── /etc/profile.d/*.sh # 通常被/etc/profile调用
# 2. 用户个人配置 (按顺序查找,找到第一个即停止)
~/.bash_profile # ← 优先
~/.bash_login # ← 其次
~/.profile # ← 最后
# 注意:有些Linux发行版可能使用其他文件
Non-login Shell 加载流程
# 继承父shell环境后,加载:
# 系统级bashrc,某些发行版使用此文件
/etc/bash.bashrc
# 个人配置文件
~/.bashrc
# 通常 ~/.bash_profile 中会显式调用 ~/.bashrc,以确保环境一致
注意事项
划分配置文件的组织结构
根据.bash_profile和.bashrc的加载时机区分配置内容。
~/
├── .bash_profile # → 设置环境变量,特别是 PATH 路径
├── .bashrc # → 主配置文件,加载其他文件,设置环境变量以外的所有内容
├── .bash_aliases # → 专门放别名
├── .bash_functions # → 专门放函数
在.bashrc中:
source ~/.bash_aliases
source ~/.bash_functions
激活更改
对.bashrc等配置文件所做的更改不会立即生效,除非关闭当前的终端会话并启动一个新的会话。不过,可以使用以下命令强制bash重新读取修改后的.bashrc文件:
source ~/.bashrc