No.011シェル

type

タイプ・コマンド種別表示

知識レベル 基礎安全に試せる一般ユーザーで使えるシェルに組み込み

コマンド名が実際に何として解決されるかを確認します。同名のaliasや関数がある環境では、どの実体が実行されるかを見抜くのに役立ちます。

答えよく使う形

  1. aliasとして解決されることを確認できます
  2. cdが外部コマンドではなく組み込みであることを確認します
  3. 同名の候補をすべて表示します
visitor@goodly: ~

$ alias ll="ls -l" type ll

ll is aliased to `ls -l`

$ type cd

cd is a shell builtin

$ type ls

覚える順番の中でLPIC-1・47 駅め / 106

どんなコマンド?

こんなときに

ある名前がaliasか関数か組み込みか外部コマンドかを確認したい時、whichでは判断が不十分な時、PATHやシェル初期化設定の影響を切り分けたい時に使います。

typeは、シェルがコマンド名をどのように解決するかを調べるための確認用コマンドです。Linuxでは、同じ見た目の名前でも、alias、関数、シェル組み込み、PATH上の実行ファイルのいずれかとして解決されることがあります。

例えば、lsがaliasで色付き表示に差し替えられている環境では、単にwhich lsを見るだけでは実態を誤解することがあります。typeを使えば、現在のBashがその名前をどう解釈しているかを確認できます。

トラブルシュートでは「思ったコマンドが動いていない」「自作関数が優先されている」「移植用スクリプトで外部コマンドを想定していたのに組み込みだった」といった場面で特に有効です。

書き方とオプション

組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。

$ type

使用例と実行結果

行を押すとコピーできます。

ll is aliased to `ls -l`
aliasとして解決されることを確認できます。
cd is a shell builtin
cdが外部コマンドではなく組み込みであることを確認します。

まず安全に試す

3分ミッション

手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。

0 / 2

つまずいたとき

whichで見た結果と実際の挙動が違う

原因aliasや関数はwhichでは適切に表現できないことがあります。

こうする現在のシェル解決順を知りたい時はtypeやcommand -vを使います。

/bin/sh向けスクリプトでtypeを使ったら動かなかった

原因typeはBash系で一般的でも、POSIX移植性は保証されません。

こうする移植性重視ならcommand -vへ置き換えます。

終わったときの数(戻り値)

$ echo $?

  • 0すべての名前について情報を取得できました。
  • >0指定した名前が見つからない、または処理できませんでした。

気をつけることと入れ方

気をつけること

危険度は低い確認コマンドです。ただしBash固有の機能なので、POSIX sh前提の説明や移植性重視のスクリプトではcommand -vのほうが適しています。

シェル(bash など)に組み込まれたコマンドです。入れるものはありません。

環境による違い

typeはBashなどで一般的な組み込みですが、POSIXでの移植性を最優先するならcommand -vを使うほうが安全です。typeのオプション体系はシェル実装によって異なります。

確かめた環境Debian GNU/Linux / 13 / Bash 5.2.372026-04-09 に確認

よくある質問

typeとwhichはどう違いますか。

typeは現在のシェルがその名前をどう解決するかを見るのに向き、whichは外部コマンド中心で実装差もあります。

type -aは何に使いますか。

同名のalias、関数、外部コマンドが複数ある時に、候補をまとめて確認するために使います。

資格試験では

  • LinuC レベル1大事1.03.1 コマンドラインの操作
  • LPIC-1大事105.1 シェル環境のカスタマイズと利用
  • 共通基礎大事Linuxコマンド基礎

type を最後まで読みました。

Linux コマンド辞典に戻る126 / 144

Goodly のメニュー