Bashをログインシェルとして起動する。
~/.bash_profile、~/.bash_login、~/.profileはすべて存在する。
/etc/profileの後に読み込まれるユーザーファイルはどれか。
ログインBashは~/.bash_profile、~/.bash_login、~/.profileの順に探し、最初に存在する1ファイルだけを読む。
詳細解説
~/.profile先行する2候補が存在しない場合に選ばれる。
~/.profileは互換性の高いログイン設定候補だが、.bash_profileと.bash_loginがない場合にだけBashが選ぶ。今回は先行候補が存在する。
~/.bash_profile候補を順に探したとき最初に見つかるため、これだけが読み込まれる。
~/.bash_profileは検索順の先頭にある。3候補がすべて存在する条件ではこれを読み、残り2つは自動では読まない。
~/.bash_login.bash_profileが存在しない場合の次候補である。
~/.bash_loginは第2候補である。.bash_profileが既に存在するため、Bashの自動検索はここまで進まない。
~/.bashrc対話的非ログインBashが直接読む標準ファイルである。
~/.bashrcは対話的非ログインBash用である。ログイン設定から明示的にsourceする構成はあるが、3候補の自動選択には含まれない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c 'help source >/dev/null; printf "%s\n" "$BASH_VERSION"'期待される結果
検証に使用するBashのバージョン理解のポイント
- 3候補は同時に読まれない
- .bash_profileが最優先
- .bashrcは別系統
確認時の注意
- 確認環境: GNU Bash 5.2 / マニュアル仕様
- --noprofileを指定したBashはこれらのログインファイルを読まない。
基礎のおさらい
最初の1ファイル
ログインBashは.bash_profile、.bash_login、.profileを順に探し、最初に存在するものだけを読む。
bashrcとの連携
ログイン時にも対話設定が必要なら、選ばれたログインファイルから~/.bashrcを明示的に読み込む構成にできる。