コマンドがwhereの代わりにwhichと呼ばれるのはなぜですか? [閉鎖]

コマンドがwhereの代わりにwhichと呼ばれるのはなぜですか? [閉鎖]

whichこのコマンドの代わりにこのコマンドが呼び出されるのはなぜですかwhere

論理的に実行可能ファイルの場所を検索しようとしているので、検索する代わりに実行可能ファイルがある「場所」を検索してください。

答え1

に与えられた語源which以前のバージョンのプログラム:

which:どのプログラムを受け取ったかを教えてくれます。

Bill Joyだけが質問が「プログラムのソース」ではなく「どのプログラムを受け取るのか」である理由を知らせることができます(しかし、「どこで」を尋ねるのは最終的に1つしかないと仮定しますが、目的はwhichどのプログラムを決定することです)プログラムは潜在的なプログラムセット内で使用されます)。

答え2

これはほとんどのコメントで議論されていますが、ここに私の意見があります。

私がいつも理解している理由は、それがwhichあなたに見えるからです。どのバイナリロード;同じ名前のバイナリが複数ある場合がありますが、コマンドを実行すると1つだけが選択されます。

which環境変数を繰り返し実行しているバイナリを確認します$PATH

[root@headdesk ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@headdesk ~]#

whichそれを見てみましょ/usr/local/sbin/sbin

たとえば、見てくださいwhich vim。私たちの3番目の位置にあります$PATH

[root@headdesk ~]# which vim
/bin/vim

パスの優先順位の高い実行可能ファイルを追加すると、実行可能ファイルが追加されたことがわかります。

[root@headdesk ~]# >/usr/local/sbin/vim; chmod +x /usr/local/sbin/vim
[root@headdesk ~]# which vim
/usr/local/sbin/vim

vimパス内のすべての実行可能ファイルを表示するには、次の-aフラグを使用できます。[root@headdesk ~]# which -a vim /bin/vim /usr/bin/vim

マニュアルページでは、これについてより簡潔に説明します。

説明する

これには1つ以上のパラメータが必要です。各引数に対して、引数がシェルプロンプトに入力されたときに実行される実行可能ファイルのフルパスをstdoutに印刷します。これは、bash(1)と同じアルゴリズムを使用して、環境変数PATHにリストされているディレクトリから実行可能ファイルまたはスクリプトを検索することによって行われます。

答え3

cutrightjmとStephen Kittという2つの素晴らしい答えに加えて、あなたが言うことをするwhereisコマンドがあります。

マンページから:

whereis - locate the binary, source, and manual page files for a command 

関連情報