unix – どのような/どこに違いがあるのか

path terminal unix which

whichwhereisの違いは?

  124  mk12  2009-09-12


ベストアンサー

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

140  Denilson Sá Maia  2009-09-12


whereisは、指定されたコマンドの標準的な*nixの場所を検索します

which はユーザ固有の PATH を検索します (これには whereis が検索する場所のいくつかが含まれ、他の場所は含まれないかもしれません – PATH に追加した場合に whereis が検索しない場所も含まれるかもしれません)

26  Amber  2009-09-12


彼らのマニュアルページを引用しています

whereis

whereis は、指定されたファイルのソース/バイナリセクションとマニュアルセクションを検索します

例えば

$ 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  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


タイトルとURLをコピーしました