type コマンドがどう解釈されるか(組み込み、エイリアス、実行ファイルなど)を表示する
type [オプション] 名前...試してみる
type lsls がどのファイルとして実行されるかを表示します(環境によってはエイリアスと表示されます)。
type cdcd はシェルの組み込みコマンドなので、そのように表示されます。
type -t cd ls-t で、種類を単語だけで表示します(builtin、file、alias など)。
ll() { ls -l; }; type ll自分で定義した関数も、type で関数と分かり、中身が表示されます。
type -a echo-a で、同じ名前の候補をすべて表示します。組み込みと実行ファイルの両方があることが分かります。
type -p cat-p で、実行ファイルのパスだけを表示します。
主なオプション
-t | 種類を alias、keyword、function、builtin、file のどれかで表示する |
|---|---|
-a | 同じ名前のものをすべて表示する |
-p | 実行ファイルとして実行されるときのパスを表示する |
解説
シェルの組み込みコマンド
type は bash の組み込みコマンドで、名前が何として実行されるかを教えてくれます。which が PATH にある実行ファイルしか調べないのに対し、type は次のすべてを調べます。
| 種類 | 例 | 表示 |
|---|---|---|
| シェルの予約語 | if |
keyword |
| エイリアス | ll |
alias |
| シェルの関数 | 自分で定義 | function |
| 組み込みコマンド | cd |
builtin |
| 実行ファイル | /usr/bin/ls |
file |
実行の優先順位
名前を入力したとき、bash はおおむね、エイリアス、関数、組み込みコマンド、PATH 上の実行ファイルの順に探して実行します。同じ名前が複数あるとき、どれが動くかは type -a で確かめられます。
見つからないとき
見つからないと、メッセージを出して終了コード1で終わります。
実行ファイルの場所
実行ファイルなら「ls is /usr/bin/ls」のようにパスが表示されます。パスだけが欲しいときは -p か、which を使います。
エイリアスについて
対話的なシェルでは、ls が ls --color=auto のエイリアスになっている場合があります。そのときは type ls で、エイリアスであると表示されます。