コマンドのパスや情報の表示~typeコマンド・whichコマンド・whereisコマンド~
本記事の対象者
LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。
今回の内容
今回は、typeコマンド、whichコマンド、whereisコマンドについて解説します。
コマンドの情報を表示するコマンドですが、それぞれに少し違いがあります。
typeコマンド
typeコマンドは、指定したコマンドがどのように解釈されているかを確認することができます。
解釈の種類としては「実行ファイル」「シェルの組み込みコマンド」「エイリアス」「予約語」などがあげられます。
typeコマンド | |
---|---|
意味 | コマンドがシェルにどう解釈されているかを確認する。 |
書式 | type [オプション] コマンド名 |
主なオプションは以下です。
オプション | 説明 |
---|---|
-a | 指定したコマンドのすべての解釈を表示する。 |
-p | 指定したコマンドのパスのみを表示する。 |
-t | 指定したコマンドの種類のみを表示する。 |
[root@localhost ~]# type cat cat は /usr/bin/cat です
catコマンドは、実行ファイルの存在するコマンドです。
catコマンドをシェルで実行した場合、「/use/bin/cat」が実行されているということになります。
[root@localhost ~]# type cd cd はシェル組み込み関数です
cdコマンドは、シェルの組み込みコマンドです。
[root@localhost ~]# type if if はシェルの予約語です
「if」はシェルの予約語です。
シェルスクリプトで使用して、シェル上で特別な意味を持つ文字列となります。
[root@localhost ~]# type ls ls は `ls --color=auto' のエイリアスです
lsコマンドはエイリアスです。(ディストリビューションによって異なります)
lsコマンドをシェル上で実行した場合、「ls –color=auto」と解釈され実行されていることになります。
[root@localhost ~]# type -a cd cd はシェル組み込み関数です cd は /usr/bin/cd です [root@localhost ~]# type -a ls ls は `ls --color=auto' のエイリアスです ls は /usr/bin/ls です
「-a」オプションを使用すると、そのコマンドのすべての解釈を表示できます。
コマンドの実行の際、シェルは最初にエイリアス、続いて組み込みコマンド、環境変数PATHにセットされているパスの順に探し、見つけたものを実行する仕組みになっています。
「cd」コマンドには実行ファイルも存在していますが、組み込みコマンドとしてのcdが優先されています。
「ls」コマンドは実行ファイルの存在する外部コマンドですが、エイリアスとしての解釈が優先して表示されていたということです。
「/usr/bin/ls」の実行ファイルを直接実行すると、色が消えています。
こちらが本来のlsコマンドです。
whichコマンド
whichコマンドは、コマンドの絶対パスを表示します。
which | |
---|---|
意味 | コマンドの絶対パスを表示する。 |
書式 | which コマンド名 |
[sak@localhost ~]$ which ls /usr/bin/ls
lsコマンドの実行ファイルの絶対パスを調べることができます。
whichコマンドは環境変数PATHに基づいて検索を行います。PATHに通っていない場所に存在するコマンドは調べることができません。
whichコマンドでコマンドを調べた際に、ディストリビューションによってはエイリアスも表示される場合があります。
[sak@localhost ~]$ which ls alias ls='ls --color=auto' /usr/bin/ls
これに関しては、whichコマンド自体をwhichコマンドで調べることによって理由が分かります。
[sak@localhost ~]$ which which alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/alias /usr/bin/which
whichコマンドを実行した際に「/usr/bin/alias」コマンドと「/usr/bin/which」コマンドが実行されるようになっていることが分かります。
よって、先ほどlsコマンドのエイリアスと絶対パスが両方表示されていたということになります。
whereisコマンド
whereisコマンドは、コマンドの実行ファイル、ソースコード、マニュアルファイルのパスを表示します。
whereis | |
---|---|
意味 | コマンドの実行ファイル、ソースコード、マニュアルファイルのパスを表示する。 |
書式 | whereis コマンド名 |
[sak@localhost ~]$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
「/usr/bin/ls」が実行ファイル、「/usr/share/man/man1/ls.1.gz」がソースコードファイル、「/usr/share/man/man1p/ls.1p.gz」がマニュアルファイルのパスです。
まとめ
今回は、typeコマンド、whichコマンド、whereisコマンドについて解説しました。
それぞれの特徴をまとめておきます。
コマンド | 書式 | 説明 |
---|---|---|
type | type コマンド名 | コマンドの解釈を表示。(実行ファイル、組み込みコマンド、エイリアス、予約語) |
which | which コマンド名 | コマンドの絶対パスを表示。 |
whereis | whereis コマンド名 | コマンドの実行ファイル、ソースコード、マニュアルファイルのパスを表示。 |
例えばsudoコマンドの設定をする際に「/etc/sudoers」を編集することになりますが、ここにコマンドの絶対パスを記載する箇所があります。
そのようなときにこれらのコマンドを使用することで、絶対パスを知ることが可能です。
基本的にはこのような用途で使用するため、実務においては「which」コマンドが最も使用機会が多いです。
最後に、確認問題で今回の記事で得た知識を確かめましょう。
確認問題
次のコマンドのうち、コマンドの実行ファイルの絶対パスを表示するものはどれか。(2つ選択)
A) which
B) locate
C) find
D) pwd
E) type