過去問ドリル

LinuCレベル1 シェルおよびスクリプト 問18

シェルおよびスクリプト/シェル環境のカスタマイズ

bashをログインシェルとして起動したときの、ホームディレクトリにある ~/.bash_profile、~/.bash_login、~/.profile の読み込みに関する説明として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル1の出題範囲「シェルおよびスクリプト」に対応。実際の試験問題ではありません)

正解: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 です。
LinuCレベル1の問題を演習モードで解く