はじめに
Linuxのコマンドラインで作業していると、「lsってコマンドなのに、なんでwhich lsを実行しても何も表示されないんだろう?」とか、「cdってどこにあるんだろう?」と疑問に思うことがあるかもしれません。実は、コマンドにはいくつかの種類があり、それぞれ実体が異なります。
そのコマンドが一体何者なのか、その正体を明らかにするのが**type**コマンドです。このコマンドは、指定した名前が「エイリアス」「関数」「組み込みコマンド」「実行ファイル」のどれに該当するのかを教えてくれます。
LPICレベル1の試験でも、コマンドの種類の違いを理解しているかは重要なポイントです。この記事では、typeコマンドの基本的な使い方から、コマンドの種類の違い、そしてLPIC対策として押さえるべきポイントまでを詳しく解説していきます。
typeコマンドの基本
まずは、typeコマンドの基本的な使い方と、よく使うオプションから見ていきましょう。
typeコマンドの書式
type [オプション] コマンド名...
ポイント: 1つまたは複数のコマンド名を指定するだけで、そのコマンドが何であるかの情報が表示されます。
主要オプション一覧
| オプション | 意味 | 補足 |
-a | 全ての一致するコマンドを表示 | all |
-P | パス検索のみを行い、パスを表示 | path |
-t | コマンドの種類を単一の単語で表示 | type |
コマンド名の由来:なぜ「type」なのか?
typeコマンドの「type」は、英語で “種類” や “型” を意味します。
このコマンドの目的は、指定された名前がどの種類のコマンドに該当するのかを判別し、ユーザーにその情報を知らせることにあります。例えば、シェル組み込みコマンド(cdなど)や、エイリアス(llなど)は、通常の実行ファイルとは異なる特別な存在です。typeコマンドは、これらの違いを明確にすることで、ユーザーがコマンドの実体を正確に理解できるようにサポートします。
各オプションの詳細と実践例
ここからは、typeコマンドの各オプションや、コマンドの種類の違いについて詳しく掘り下げていきます。
コマンドの種類
typeコマンドが判別する主なコマンドの種類は以下の通りです。
- エイリアス (
alias): 別のコマンドに別名をつけたもの。 - 関数 (
function): シェルスクリプトのように、複数のコマンドをまとめて定義したもの。 - 組み込みコマンド (
builtin): シェルに組み込まれており、外部の実行ファイルではないもの。 - 実行ファイル (
file):/binや/usr/binなどに存在する、独立したプログラムファイル。
実践例:
lsコマンドの正体を確認:
type ls
出力例:

この場合、lsはls --color=autoというエイリアスであることがわかります。
cdコマンドの正体を確認:
type cd
出力例:

この場合、cdはシェルに組み込まれたコマンドであることがわかります。
vimコマンドの正体を確認:
type vim
出力例:

この場合、vimは/usr/bin/vimという実行ファイルであることがわかります。
-a (all) オプション:全ての一致するコマンドを表示
意味: 1つの名前に対して、エイリアス、関数、組み込みコマンド、実行ファイルなど、存在する全ての種類を表示します。通常、シェルは優先順位の高いもの(エイリアス > 関数 > 組み込みコマンド > 実行ファイル)を1つだけ実行しますが、このオプションを使えばその優先順位を越えて全ての候補を確認できます。
実践例: lsコマンドの全ての候補を表示します。
type -a ls
出力例:

エイリアスと実行ファイルの両方が存在することがわかります。
オプションの由来:「-aオプションのaは、all(全て)の頭文字から来ています。優先順位の高い1つだけでなく、その名前に該当する可能性のある全ての種類を確認したいというニーズに応えるために導入されました。」
-P (path) オプション:パス検索のみを行い、パスを表示
意味: 指定した名前が実行ファイルの場合に、そのフルパスのみを表示します。エイリアスや組み込みコマンドは無視されます。この機能は、whichコマンドと似ています。
実践例: lsコマンドの実行ファイルのパスを表示します。
type -P ls
出力例:

オプションの由来:「-PオプションのPは、path(パス)の頭文字から来ています。typeコマンドの通常の動作とは異なり、$PATHに沿って実行ファイルを検索し、そのパスのみを表示することを明確にするためにこのオプションが用意されています。」
-t (type) オプション:コマンドの種類を単一の単語で表示
意味: コマンドの種類を、alias, function, builtin, file のいずれかの単一の単語で表示します。スクリプトなどでコマンドの種類を判別したい場合に便利です。
実践例: cdコマンドの種類を単語で表示します。
type -t cd
出力例

オプションの由来:「-tオプションのtは、type(種類)の頭文字から来ています。コマンドの種類を簡潔な単語で取得したいという、特にシェルスクリプトでの利用を想定したニーズに応えるために追加されました。」
まとめ
今回は、Linuxコマンドの実体を特定するtypeコマンドについて、その基本的な使い方からコマンド名の由来、そして主要オプションまでを詳しく解説しました。typeコマンドを使いこなすことは、cdのようなシェル組み込みコマンドと、lsのような外部実行ファイルの動作の違いを深く理解するために非常に重要です。
LPICレベル1の試験対策としてはもちろん、日々のLinux作業でコマンドの挙動に疑問を持った時に、typeコマンドを積極的に活用することで、コマンドへの理解を深めることができます。



コメント