理解 Shell 啟動檔案機制,能精準控制環境變數、別名、函數的生效範圍,避免「為何腳本讀不到 alias」的困擾。
| 類型 | 啟動方式 | 典型場景 |
|---|---|---|
| 登入 Shell | 輸入帳密登入、bash --login | TTY、SSH、圖形登入後開啟終端機(視設定) |
| 非登入 Shell | 已登入後執行 bash | 終端機分頁、腳本內 bash -c |
| 互動式 Shell | 有提示字元、讀取標準輸入 | 人工操作終端機 |
| 非互動式 Shell | 執行腳本、bash script.sh | 自動化部署、CI/CD |
/etc/profile(全域)~/.bash_profile → ~/.bash_login → ~/.profilesource ~/.bashrc 載入互動設定。~/.bashrc系統層級 /etc/bash.bashrc(Debian/Ubuntu)或 /etc/bashrc(RHEL)常被 /etc/profile 呼叫。
預設不讀取任何啟動檔,除非環境變數 BASH_ENV 指向檔案路徑。
.bashrc。解法:在腳本開頭 source ~/.bashrc 或直接寫函數/完整路徑。export。# ~/.bash_profile
[[ -f ~/.bashrc ]] && source ~/.bashrc
# ~/.bashrc
# 僅互動式才執行
[[ $- != *i* ]] && return
alias ll='ls -alF'
export PATH="$HOME/bin:$PATH"
# ... 其他互動設定