コンピュータ実習 6/28解答
問題
- あなたがjavaと打ったとき、どこにあるファイルが実行対象となるか答えなさい
(シンボリックリンクはたどらなくていい)
- /usr/binにjavaがあるが、こちらのファイルが選ばれなかったのならどうしてか?
また、こちらのファイルを実行するにはどうすればよいか?
(こちらのファイルが選ばれた人はどうして選ばれたか理由を考えなさい)
解答
-
$ which java
/usr/local/bin/java
whichコマンドで指定したコマンドのフルパスを表示する.
aオプションを使うことで実行可能なすべてのすべてのパスを表示させることも出来る.
$ which -a java
/usr/local/bin/java
/usr/bin/java
結果は優先順(後述)に基づいて表示される.
-
コマンドは環境変数のPATHを参照して実行される.(以下例)
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/md302/ua830269/bin
これをみると, コマンドが呼ばれた際はまず/usr/local/binを見て,
コマンドがあれば実行.なければ次の/binを見て...といった順番でコマンドが探されることがわかる.
以上より, /usr/binのjavaが呼ばれないのは/usr/local/binのほうが優先度が高いからだとわかる.
ここで/usr/binのjavaを実行するには
$ /usr/bin/java
と打てば良い. exportなどでPATHを編集するのも可.
ただし, PATHを編集する場合, /usr/binを/usr/local/binよりも前に持ってきていない解答は減点.
「alternativesで指定されているから」という解答がいくつかあったが,
alternativesで指定しているのは/usr/bin/javaで実行されるjavaのバージョンであって,
javaコマンド自体の場所ではないことに注意.
まとめ
満点5点からの減点方式。問題文はよく読みましょう
クイズや授業についての質問があればメールで。書式には要注意。