FreeBSD QandA 130
Q. カレントディレクトリを PATH に含めてはいけないと言われた
のですが、どうしてですか?
A. セキュリティホールになりうるからです。
もしカレントディレクトリが PATH に含まれている状態で、
% cd /tmp
% ls
としたとき、/tmp/ls というファイルがあったら、/bin/ls でなく
/tmp/ls が実行されてしまいます。
もしかしたら /tmp/ls には
#!/bin/sh
/bin/rm -rf $HOME &
と書いてあるかもしれません。その場合、あなたのホームディレクトリは
全て消えてしまいます。同様に、他人のホームディレクトリを ls で覗いた
場合、そこに置いてある得体の知れない ls を実行してしまうかもしれません。
どうしてもカレントディレクトリを PATH に含めたいならば、せめて PATH の
最後にしましょう (でもやめておいた方がよいと思います)。
「と言っても、カレントディレクトリにあるコマンドを実行するとき
タイプ量が増えてしまいのがイヤだから…」
という方は、tcsh・bash・zsh などの高機能なシェルを使って、補完
機能を活用しましょう (FreeBSD 4.1-RELEASE 以降での csh(1) は、
tcsh(1) と全く同じです)。
カレントディレクトリに a.out がある状態で
% ./a(TAB を押す)
とすると
% ./a.out
と展開されます。他に a から始まるファイルがある場合は
% ./a.(TAB を押す)
とします。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。