はじめに
man bash 1
のINVOCATIONのところを簡単にまとめただけです。
バージョンはGNU Bash 4.3
です。(4.3と4.4でも違いはあるみたい)
bashの起動モード
- ログインシェル (
-bash
orbash --login
で起動) - インタラクティブシェル (
-i
で起動もしくは次のいずれかを満たして起動)- 引数なし
-
-c COMMAND
オプションなし
- shシェル (
sh
として起動) - POSIXシェル (
--posix
で起動)
ログインシェルとインタラクティブシェルは直交する。
shシェル、POSIXシェルのモードは今回省略する。
ログインシェルの場合
起動時
/etc/profile
-
~/.bash_profile
,~/.bash_login
,~/profile
のいずれか(この順で探索)
--noprofile
によりこれらは読み込まれなくなる。
終了時
~/bash_logout
ログインシェルでない場合
インタラクティブシェルの場合
/etc/bash.bashrc
~/.bashrc
--norc
によりこれらは読み込まれなくなる。
--rcfile FILE
によりこれらの代わりにFILE
を読み込む。
インタラクティブシェルでない場合
$BASH_ENV
で指定されたファイルが読み込まれる。
リモートから(rshd
またはsshd
によって)起動された場合
-
/etc/bash.bashrc
(man
には~/.bashrc
and~/.bashrc
と書いてあるが前半は誤植) ~/.bashrc
ちなみに4.4だと~/.bashrc
だけが書いてあるが未検証。