No.011シェル
type
タイプ・コマンド種別表示
コマンド名が実際に何として解決されるかを確認します。同名のaliasや関数がある環境では、どの実体が実行されるかを見抜くのに役立ちます。
答えよく使う形
$ alias ll="ls -l"
type ll
ll is aliased to `ls -l`
$ type cd
cd is a shell builtin
$ type ls
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中で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`
cd is a shell builtin
まず安全に試す
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