web-dev-qa-db-ja.com

違いはどこですか

whichwhereisの違いは何ですか?

119
mk12

whereiswhichについて、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
130

whereisは、指定されたコマンドの標準の* nixロケーションを検索します。

whichはユーザー固有のPATHを検索します(検索された場所の一部が含まれる場合があり、他の場所は含まれない場合があります-whereisが検索しない場所も含まれる場合がありますあなたのPATHに追加されました)

24
Amber

彼らのマニュアルページを引用する:

whereis

whereisは、指定されたファイルのsource/binaryおよびmanualsセクションを見つけます。

例えば ​​:

$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

つまり、「php」実行可能ファイル、および他のいくつかのもの(manページなど)。


およびwhich

現在の環境で実行されるファイルのパス名を返します

例えば ​​:

$ which php
/usr/bin/php

つまり、「php」実行可能ファイルのみです。

6
Pascal MARTIN

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できませんでした。彼らは本当に別のデータベースを使用していますか?データベースはどのように機能しますか? -まあ、ペダントになることを拒否するのはどうですか? :)

1
user192505