Last Update 2022/06/05
-l オプション
bashをログインシェルとした場合と同様に起動
テスト概要
-l オプションの有無による読み込みファイルの違いを比較
-l オプション使用時に /etc/profile が存在しない場合の動作
-l オプション使用時に ~/.bash_profile が存在しない場合の動作
-l オプション使用時に ~/.bash_profile、 ~/.bash_login が存在しない場合の動作
-l オプション使用時に ~/.bash_profile、 ~/.bash_login、 ~/.profile が存在しない場合の動作
-l オプション使用時に ~/.bash_logout が存在しない場合の動作
bashがshという名前で -l オプションを使用して起動された場合の動作
実行環境
GNU bash, version 5.1.16
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
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 ここまで **********
-l オプションの有無による読み込みファイルの違いを比較
-l オプションを使用せずにbashを起動
-bash-5.1$ bash
[bashrc] <--- ~/.bashrcの実行による出力
bash-5.1$ exit
exit
-bash-5.1$
-l オプションを使用してbashを起動
-bash-5.1$ bash -l
[etc_profile] <--- /etc/profileの実行による出力
[bash_profile] <--- ~/.bash_profileの実行による出力
bash-5.1$ exit
logout
[bash_logout] <--- ~/.bash_logoutの実行による出力
-bash-5.1$
-l オプション使用時に /etc/profile が存在しない場合の動作
-bash-5.1$ bash -l
[bash_profile]
bash-5.1$ exit
logout
[bash_logout]
-bash-5.1$ /etc/profileは存在しないため実行されない
-l オプション使用時に ~/.bash_profile が存在しない場合の動作
-bash-5.1$ bash -l
[etc_profile]
[bash_login] <--- ~/.bash_loginの実行による出力
bash-5.1$ exit
logout
[bash_logout]
-bash-5.1$
-l オプション使用時に ~/.bash_profile、 ~/.bash_login が存在しない場合の動作
-bash-5.1$ bash -l
[etc_profile]
[profile] <--- ~/.profileの実行による出力
bash-5.1$ exit
logout
[bash_logout]
-bash-5.1$
-l オプション使用時に ~/.bash_profile、 ~/.bash_login、 ~/.profile が存在しない場合の動作
-bash-5.1$ bash -l
[etc_profile] <--- 起動時の実行は/etc/profileのみ
bash-5.1$ exit
logout
[bash_logout]
-bash-5.1$
-l オプション使用時に ~/.bash_logout が存在しない場合の動作
-bash-5.1$ bash -l
[etc_profile]
[bash_profile]
bash-5.1$ exit
logout
-bash-5.1$ ログアウト時の実行ファイルは無し
bashがshという名前で -l オプションを使用して起動された場合の動作
-bash-5.1$ sh -l
[etc_profile] <--- /etc/profileの実行による出力
[profile] <--- ~/.profileの実行による出力
sh-5.1$ exit
logout
[bash_logout] <--- ~/.bash_logoutの実行による出力
-bash-5.1$