which
とwhereis
の違いは?
124 mk12 2009-09-12
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
140 Denilson Sá Maia 2009-09-12
whereis
は、指定されたコマンドの標準的な*nixの場所を検索します
which
はユーザ固有の PATH を検索します (これには whereis が検索する場所のいくつかが含まれ、他の場所は含まれないかもしれません – PATH に追加した場合に whereis
が検索しない場所も含まれるかもしれません)
26 Amber 2009-09-12
彼らのマニュアルページを引用しています
whereis は、指定されたファイルのソース/バイナリセクションとマニュアルセクションを検索します
例えば
$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz
つまり、”php “の実行ファイルや他のもの(manページのようなもの)です
現在の環境で実行されるファイルのパス名を返します
例えば
$ which php
/usr/bin/php
つまり、”php “の実行ファイルだけです
6 Pascal MARTIN 2009-09-12
環境変数PATHで指定したディレクトリ内の実行ファイルを検索します。そして、見つかった場合には、この実行ファイルのフルパス名が表示されます
ifconfigはルートのPATHにしか存在しないので、出力されません
ここでは、システムが自動的に構築したデータベースを使用して、実行ファイル、ソースファイル、マニュアルページを検索します
$ whereis less 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 2013-01-24