which
とwhereis
の違いは何ですか?
whereis
とwhich
について、whatis
を使用して学習しませんか?
$ whatis which
which (1) - shows the full path of (Shell) commands
$ whatis whereis
whereis (1) - locate the binary, source, and manual page files for a command
基本的に、whereis
は「おそらく有用な」ファイルを検索しますが、which
は実行可能ファイルのみを検索します。
whereis
を使用することはほとんどありません。一方、which
は特にスクリプトで非常に便利です。 which
は次の質問に対する答えです:このコマンドはどこから来たのですか?
$ which ls
/bin/ls
$ whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2
whereis
は、指定されたコマンドの標準の* nixロケーションを検索します。
which
はユーザー固有のPATHを検索します(検索された場所の一部が含まれる場合があり、他の場所は含まれない場合があります-whereis
が検索しない場所も含まれる場合がありますあなたのPATHに追加されました)
which環境変数PATHで指定されたディレクトリで実行可能ファイルを検索します。そして、見つかると、この実行可能ファイルの完全パス名が出力されます。
$ ls
/bin/ls
$ if ifconfig
$#ifconfigはルートのPATHにのみ存在するため、出力はありません。
whereisシステムによって自動的に構築されたデータベースを使用して、実行可能ファイル、ソースファイル、およびマニュアルページを検索します。
$ whereis less
以下:/ bin/less/usr/bin/less/usr/bin/X11/less /usr/share/man/man1/less.1.gz
しかし、それはwhereisおよびlocate同じデータベースを使用しないでください。ソフトウェアをインストールしてwhereisおよびlocateすぐにこのソフトウェアを検索します。結果はwhereisがこのソフトウェアに関連するいくつかのファイルを見つけることができるということですlocateできませんでした。彼らは本当に別のデータベースを使用していますか?データベースはどのように機能しますか? -まあ、ペダントになることを拒否するのはどうですか? :)