# 第三章 GNUとUnixのコマンド
練習問題3.9
自分用にコマンドをいくつか作成し、$HOME/binディレクトリ以下に格納しました。
絶対パスで指定して実行するのは手間がかかるので、コマンド名のみの入力で実行されるようにしたいと思います。そこで、つぎのコマンドを実行しました。
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ PATH=$HOME/bin
この結果として予想される事態を2つ選択してください。
A. ~/binディレクトリ以下のコマンドはコマンド名のみで実行可能となる
B. PATH変数の設定時に「$」をつけ忘れているのでエラーメッセージが表示される
C. PATH変数の設定時に「$」をつけ忘れているのでPATH変数の内容は変更されないが、エラーメッセージは表示されない
D. 「PATH="$HOME/bin"」のように引用符で囲って指定しなければエラーになる
E. 多くのコマンドが「command not found」となって実行できなくなる
(解答)A, E
(解説)
PATH関数にパスを追加するには「PATH=$PATH:追加ディレクトリ」の書式で指定します。設問にあるように、単に「PATH=追加ディレクトリ」とすると、新しく指定したディレクトリのみがPATH変数に設定されます。その結果、指定したディレクトリのコマンドとシェルの内部コマンド以外のコマンドは「command not found」となり、実行できなくなってしまいます。したがって、選択肢Eは適切です。設問では、パスが通っているのは$HOME/binディレクトリだけになりますので、少なくとも$HOME/bin以下のコマンドはコマンド名のみで実行可能となります。従って選択肢Aは適切です。変数を設定するときは、変数名に「$」記号をつけません。従って選択肢B及び選択肢Cは不正解です。また、変数に指定する文字列は引用符で囲って指定しなくてもエラーになりません。従って、選択肢Dは不正解です。