![コマンドがwhereの代わりにwhichと呼ばれるのはなぜですか? [閉鎖]](https://linux33.com/image/196396/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8Cwhere%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%ABwhich%E3%81%A8%E5%91%BC%E3%81%B0%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
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