Linuxコマンドのパスを取得する
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コマンドに関する詳細情報を取得できます。