Last Update 2022/06/05
起動時の挙動
テスト概要
対話型ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
対話型非ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
非対話型ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
非対話型非ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
bash関連ファイルの設定(テスト用)
/etc/profile
# ********** /etc/profile ここから **********
echo "[etc_profile]"
# ********** /etc/profile ここまで **********
~/.bash_login
# ********** ~/.bash_login ここから **********
echo "[bash_login]"
# ********** ~/.bash_login ここまで **********
~/.bash_logout
# ********** ~/.bash_logout ここから **********
echo "[bash_logout]"
# ********** ~/.bash_logout ここまで **********
~/.bash_profile
# ********** ~/.bash_profile ここから **********
echo "[bash_profile]"
# ********** ~/.bash_profile ここまで **********
~/.bashrc
# ********** ~/.bashrc ここから **********
echo "[bashrc]"
# ********** ~/.bashrc ここまで **********
~/.profile
# ********** ~/.profile ここから **********
echo "[profile]"
# ********** ~/.profile ここまで **********
サンプルスクリプトファイル
sample.sh
#!/bin/bash
echo $0
exit 0
対話型ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
上記bash関連ファイルがすべて存在する場合
-bash-5.1$ bash --login
[etc_profile] <--- /etc/profileの実行による出力
[bash_profile] <--- ~/.bash_profileの実行による出力
bash-5.1$ exit
logout
[bash_logout] <--- ~/.bash_logoutの実行による出力
-bash-5.1$
~/.bash_profile が存在しない場合
-bash-5.1$ bash --login
[etc_profile]
[bash_login] <--- ~/.bash_loginの実行による出力
bash-5.1$ exit
logout
[bash_logout]
-bash-5.1$ ~/.bash_profile の次に ~/.bash_login を検索して実行
~/.bash_profile、~/.bash_login が存在しない場合
-bash-5.1$ bash --login
[etc_profile]
[profile] <--- ~/.profileの実行による出力
bash-5.1$ exit
logout
[bash_logout]
-bash-5.1$ ~/.bash_profile、~/.bash_login の次に ~/.profile を検索して実行
対話型非ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
-bash-5.1$ bash
[bashrc] <--- ~/.bashrcの実行による出力
bash-5.1$ exit
exit
-bash-5.1$
非対話型ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
-bash-5.1$ bash --login sample.sh
[etc_profile] <---
[bash_profile] <---
sample.sh
[bash_logout] <---
-bash-5.1$ 対話型ログインシェル起動時と同様の初期化ファイルなどが実行される
非対話型非ログインシェルとして起動した場合の初期化ファイルなどの読み込み挙動
-bash-5.1$ bash sample.sh
sample.sh
-bash-5.1$ 初期化ファイルなどは実行されない
実行環境
GNU bash, version 5.1.16
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。