LinuCレベル1 シェルおよびスクリプト 問18
シェルおよびスクリプト/シェル環境のカスタマイズbashをログインシェルとして起動したときの、ホームディレクトリにある ~/.bash_profile、~/.bash_login、~/.profile の読み込みに関する説明として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「シェルおよびスクリプト」に対応。実際の試験問題ではありません)
- A3つのファイルをすべてこの順に読み込み、後から読んだファイルの設定が優先される
- B~/.profileを最初に読み込み、~/.bash_profileは非ログインシェルのときだけ読み込む
- Cこの順に探し、最初に見つかった読み取り可能なファイルだけを読み込み、残りは読まない
- D~/.bash_loginだけを読み込み、ほかの2つはログアウトするときに読み込まれるファイルである
正解:C
解説
bashはログインシェルとして起動すると、まず/etc/profileを読み込み、続いて ~/.bash_profile、~/.bash_login、~/.profile をこの順に探して、最初に見つかった読み取り可能なファイルだけを実行します。そのため、~/.profileだけで環境を設定していたユーザーが新たに ~/.bash_profile を作ると、~/.profile は読まれなくなります。これを避けるため、~/.bash_profile の中から ~/.profile や ~/.bashrc を読み込むように書くのが一般的です。ログアウト時に読まれるのは ~/.bash_logout です。
選択肢ごとの解説
- A誤り。3つすべてが読み込まれるわけではありません。最初に見つかった1つだけが読み込まれます。
- B誤り。探す順序は ~/.bash_profile が最初です。非ログインの対話シェルで読まれるのは ~/.bashrc です。
- C正しい。最初に見つかった読み取り可能なファイルだけが実行され、残りのファイルは読み込まれません。
- D誤り。~/.bash_login は ~/.bash_profile が無い場合にだけ読まれます。ログアウト時に読まれるのは ~/.bash_logout です。