人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linuxのwhereコマンドやwhichコマンドは
実行後すぐに結果がかえってきます。

検索しているにしてはすこし早すぎるように思うのですが、
どこかにインデックスが作られていたりするのでしょうか?
もし単純なfindでないならば、仕組みを教えて欲しいです。

よろしくお願いします。

●質問者: kenk
●カテゴリ:コンピュータ
✍キーワード:Linux インデックス コマンド 検索
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●35ポイント

これらのコマンドは、ディスク全体を検索するのではなく、Path が通っている範囲を検索します。

( echo $PATH 等で表示される範囲)


Path の指定先が多ければ検索範囲が広くなりますが、それでもディスク全体に対してはごく一部の範囲でしょう。

なので一般のファイル検索等に比べて、処理時間は短時間となります。

http://cyberam.dip.jp/linux_command/command/man.html#which


2 ● znz
●35ポイント

組み込みコマンドのwhichなどの場合はインデックスはシェルの中に作られています。

コマンドを実行するときの最初のコマンド部分の補完にも使われているものと共通だと思います。

bashなどは自動で検索し直しますが、(t)cshやzshなどは高速化のためrehashコマンドで明示的にインデックスを再構築するようになっています。(t)cshやzshで新しくインストールしたコマンドが補完に出てこないことがあるのはそのためです。

外部コマンドのwhichを使った場合はPATHを全部検索しますが、他の回答やコメントにあるように、PATHを通しているところだけに対して特定のファイルの存在をチェックするだけなので、そんなに時間はかかりません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ