1. 概要

シェルに入力するLinuxコマンドは、組み込み、関数、エイリアス、または外部実行可能ファイルにすることができます。 which コマンド type Locate などのいくつかのLinuxユーティリティでそれが何であるかとそのパスを見つけることができますwhatis 、およびwhereis

この記事では、 which command type 、および whereis ユーティリティについて説明します。これらは、ほとんどのLinuxで通常使用されています-ベースのオペレーティングシステム。

2. PATH環境変数

ユーティリティの説明にジャンプする前に、シェルなどのアプリケーションが、PATH という環境変数に格納されているディレクトリのリストからコマンドを検出(および実行)することを知っておく必要があります。 。 各ディレクトリはコロン文字「:」で区切られます。

echo コマンドを呼び出すことで、この変数の内容を表示できます。

$ echo $PATH
/home/baeldung/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin

つまり、システムにプログラムまたはアプリケーションをインストールするときに、シェルの任意のディレクトリから実行可能ファイルを呼び出せるようにするには、PATH変数に実行可能ファイルのパスがあることを確認する必要があります。

次のコマンドを実行することにより、PATH変数を一時的に更新できます

$ export PATH=$PATH:/sampledir/path
$ echo $PATH
/home/baeldung/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin:/sampledir/path

再起動時にPATHがリセットされます

ただし、.bashrcファイルを更新することでPATH変数を永続的に更新できます

export PATH=$PATH:/sampledir/path

3. whichコマンド

ほとんどのLinuxベースのオペレーティングシステムには、whichコマンドがインストールされています。 このコマンドを使用して、Linuxコマンドのパスを取得できます。

$ which docker
/usr/bin/docker

これは、 docker コマンドを呼び出すと、 / usr / bin/ディレクトリにあるDocker実行可能ファイルが実行されることを示しています。

さらに、whichコマンドにはパラメーター-aがあり、一致するすべてのパス名を出力します。

$ which -a docker
/usr/bin/docker
/bin/docker

したがって、2つの異なるディレクトリに2つの実行可能ファイルがあります。 シェルは/usr / bin / ディレクトリにあるものを使用します。これは、ディレクトリがPATH変数の最初に表示され、ファイルに適切なアクセス許可があるためです。

それ以外の場合は、 / bin/ディレクトリ内の次の実行可能ファイルに移動します。

$ echo $PATH
/home/tenzin/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin:/sampledir/path

4. コマンドコマンド

コマンドコマンドは、Linuxコマンドのパスを見つけるために使用できるもう1つのユーティリティです。

このユーティリティは、実行可能ファイル( docker )とエイリアス( ls )の違いを教えてくれます。

$ command -v docker
/usr/bin/docker
$ command -V docker
docker is hashed (/usr/bin/docker)

-vまたは-Vパラメーターを渡す必要があります。

$ command -v ls
alias ls='ls --color=auto'
$ command -V ls
ls is aliased to `ls --color=auto'

それ以外の場合は、提供されているLinuxコマンドを実行します

$ command ls
 Android               Downloads   Pictures                                  Templates
 AndroidStudioProjects file123.txt 'Screenshot from 2021-06-14 16-11-31.png' Videos
 ...

5. typeコマンド

type コマンドは、Linuxコマンドのパスを表示できるだけでなく、ターゲットが組み込み、関数、エイリアス、または外部実行可能ファイルのいずれであるかを示すこともできます。

Linuxコマンドのパスを示しましょう。

$ type -P ls
/usr/bin/ls

パラメータがない場合は、コマンド定義が表示されます。

$ type ls
ls is aliased to `ls --color=auto'

-a パラメーターを使用すると、コマンド定義、実行可能ファイルの種類、およびそのパスが表示されます。

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
ls is /bin/ls

type -tを使用して、実行可能タイプを表示することもできます。

$ type -t which
file
$ type -t command
builtin
$ type -t type
builtin
$ type -t whereis
file
$ type -t ls
alias
$ type -t docker
file

6. whereisコマンド

最後に、whereisコマンドを見てみましょう。 このコマンドは、特定のコマンドのバイナリ、ソース、およびマニュアルページのパスを検索します。

ユーティリティを直接呼び出すと、バイナリ、ソース、およびマニュアルページのすべての場所が表示されます。

$ whereis docker
docker: /usr/bin/docker /etc/docker /usr/libexec/docker /usr/share/man/man1/docker.1.gz

さらに、 -bパラメーターを使用して、バイナリのみを表示できます。

$ whereis -b docker
docker: /usr/bin/docker /etc/docker /usr/libexec/docker

さらに、ソース(このシステムには存在しない)のみを表示したい場合:

$ whereis -s docker
docker:

マニュアルだけを表示したい場合:

$ whereis -m docker
docker: /usr/share/man/man1/docker.1.gz

7. 結論

ユーティリティ– which command type 、および whereis を使用して、Linuxコマンドのパスを見つけることができます。 一部のユーティリティは、他のユーティリティよりも多くの情報を表示します。

このチュートリアルで見たように、いくつかのユーティリティにはいくつかの注意点がありますが、簡単に言えば、これらの4つのユーティリティを使用して、使用するLinuxコマンドに関する詳細情報を取得できます。