LinuCレベル1 シェルおよびスクリプト 問22
シェルおよびスクリプト/シェル環境のカスタマイズ自分用のスクリプトを置いたディレクトリ ~/bin を、既存のコマンド検索パスを保ったまま、検索順の最後に加えたい。~/.bashrc に書く記述として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「シェルおよびスクリプト」に対応。実際の試験問題ではありません)
- Aexport PATH=$HOME/bin
- Bexport PATH=$HOME/bin:$PATH
- Cexport PATH=$PATH:$HOME/bin
- Dalias PATH=$PATH:$HOME/bin
正解:C
解説
環境変数PATHは、コマンド名だけを入力したときに実行ファイルを探すディレクトリをコロン(:)区切りで並べたもので、シェルは前から順に探します。既存の値を表す$PATHの後ろに「:$HOME/bin」を連結すれば、既存の検索パスを残したまま~/binを最後に加えられます。exportしておくと、そのシェルから起動する子プロセスにも引き継がれます。なお、ディストリビューションによっては既定の~/.profile等に、~/binが存在すればPATHへ加える処理があらかじめ書かれている場合もあります。
選択肢ごとの解説
- A誤り。PATHが~/binだけに置き換わり、/usr/binなど既存の検索パスが失われるため、lsなどのコマンドがパスを指定しないと実行できなくなります。
- B誤り。既存の検索パスは残りますが、~/binが先頭に加わるため、同じ名前のコマンドがあれば~/binのものが優先されます。検索順の最後に加えるという要件と異なります。
- C正しい。既存の$PATHの後ろに~/binを連結するので、既存の検索パスを保ったまま~/binが最後に探されます。
- D誤り。aliasはコマンドに別名を付けるための組込みコマンドで、環境変数PATHの値は変わりません。PATHという名前のコマンド別名が定義されるだけです。