| 文件 | 作用範圍 | 觸發時機 | 備註 |
|---|---|---|---|
/etc/profile |
全域(所有用戶) | 登入 Shell 時 | 會讀取 /etc/profile.d/*.sh |
/etc/bashrc |
全域 | 每次啟動互動式 Bash | 非登入 Shell 也會讀取 |
~/.bash_profile |
用戶級 | 登入 Shell 時(僅一次) | 通常調用 ~/.bashrc |
~/.bashrc |
用戶級 | 每次啟動互動式 Shell | 含別名、函數、提示符等 |
~/.bash_logout |
用戶級 | 退出登入 Shell 時 | 清理臨時任務用 |
su - user、SSH 登入、TTY 登入 → 讀取 ~/.bash_profilebash 命令 → 讀取 ~/.bashrc/etc/profile 設定的全域變量對所有用戶生效;~/.bashrc 等用戶級配置只能繼承父級變量,屬「父子關係」。
# ~/.bash_profile 典型內容
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# 環境變量放在 ~/.bash_profile 或 ~/.profile
export PATH="$HOME/bin:$PATH"
export EDITOR=vim
將別名、函數、提示符等互動式配置集中在 ~/.bashrc,環境變量放在 ~/.bash_profile,並由前者調用後者,避免重複維護。