質問: Linuxのwhereコマンドやwhichコマンドは 実行後すぐに結果がかえってきます。 検索しているにしてはすこし早すぎるように思うのですが、 どこかにインデックスが作られていたりするのでしょうか? もし単純なfindでないならば、仕組みを教えて欲しいです。 よろしくお願いします。
回答: 組み込みコマンドのwhichなどの場合はインデックスはシェルの中に作られています。 コマンドを実行するときの最初のコマンド部分の補完にも使われているものと共通だと思います。 bashなどは自動で検索し直しますが、(t)cshやzshなどは高速化のためrehashコマンドで明示的にインデックスを再構築するようになっています。(t)cshやzshで新しくインストールしたコマンドが補完に出てこないことがあるのはそのためです。 外部コマンドのwhichを使った場合はPATHを全部検索しますが、他の回答やコメントにあるように、PATHを通しているところだけに対して特定のファイルの存在をチェックするだけなので、そんなに時間はかかりません。