違いは何だwhich
とはwhereis
?
type
優れているように感じます。また、定義されたエイリアス、関数などについても知っています
違いは何だwhich
とはwhereis
?
type
優れているように感じます。また、定義されたエイリアス、関数などについても知っています
回答:
について学び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
、ないに1つwhich
。
which
実際のパスを示します。が指すパスは、which
が指すパスへの単なるシンボリックリンクではないのwhereis
ですか?たぶんそれはシェルエイリアスです。bashで、実行してみてくださいtype your_cmd_here
。
彼らのマニュアルページを引用する:
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」実行可能ファイルのみ。
環境変数PATHで指定されたディレクトリで実行可能ファイルを検索します。そして、判明した場合、この実行可能ファイルの絶対パス名が出力されます。
$ which ls
/ bin / ls
$ which ifconfig
$#ifconfigはルートのPATHにのみ存在するため、出力はありません。
whereisは、システムによって自動的に構築されたデータベースを使用して、実行可能ファイル、ソースファイル、およびマニュアルページを検索します。
$ whereis less
less:/ bin / less / usr / bin / less / usr / bin / X11 / less /usr/share/man/man1/less.1.gz
しかし、whereisとlocateは同じデータベースを使用していないようです。ソフトウェアをインストールし、whereisを使用してすぐに見つけて、このソフトウェアを検索したとき。その結果、whereisはこのソフトウェアに関連するいくつかのファイルを見つけることができましたが、locateは見つけることができませんでした。彼らは本当に異なるデータベースを使用していますか?データベースはどのように機能しますか?-さて、退屈することを拒否するのはどうですか?:)