概要
コマンド名が実際に何として解決されるかを確認します。同名のaliasや関数がある環境では、どの実体が実行されるかを見抜くのに役立ちます。
基本構文
type [オプション] 名前 ...詳細解説
typeは、シェルがコマンド名をどのように解決するかを調べるための確認用コマンドです。Linuxでは、同じ見た目の名前でも、alias、関数、シェル組み込み、PATH上の実行ファイルのいずれかとして解決されることがあります。
例えば、lsがaliasで色付き表示に差し替えられている環境では、単にwhich lsを見るだけでは実態を誤解することがあります。typeを使えば、現在のBashがその名前をどう解釈しているかを確認できます。
トラブルシュートでは「思ったコマンドが動いていない」「自作関数が優先されている」「移植用スクリプトで外部コマンドを想定していたのに組み込みだった」といった場面で特に有効です。
このコマンドを使う場面
ある名前がaliasか関数か組み込みか外部コマンドかを確認したい時、whichでは判断が不十分な時、PATHやシェル初期化設定の影響を切り分けたい時に使います。
まず安全に試す方法
1. alias ll="ls -l"
2. type ll
3. type ls
4. type -a printf
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
aliasを1つ作成し、typeとtype -aで解決順の違いを確認します。
-
cd、printf、grepなどをtypeで調べ、どれが組み込みか確認します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.1 コマンドラインの操作根拠: officialLinuCレベル1では、コマンドライン操作やシェル環境の理解が問われます。typeはその基礎を支える代表的なコマンドです。
-
LPIC-1
範囲: 105.1 シェル環境のカスタマイズと利用根拠: officialLPIC-1では、シェル環境、変数、履歴、コマンド解決の理解が重視されます。typeはその周辺知識と一緒に学ぶ価値が高いコマンドです。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、typeはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。
実行結果サンプル
-
alias ll="ls -l" type llll is aliased to `ls -l` -
type cdcd is a shell builtin
戻り値コード
- 0 すべての名前について情報を取得できました。
- >0 指定した名前が見つからない、または処理できませんでした。
使用例
type lstype -a python3type -t cdtype -p grep
よくあるエラー
-
whichで見た結果と実際の挙動が違う 原因: aliasや関数はwhichでは適切に表現できないことがあります。対処: 現在のシェル解決順を知りたい時はtypeやcommand -vを使います。
-
/bin/sh向けスクリプトでtypeを使ったら動かなかった 原因: typeはBash系で一般的でも、POSIX移植性は保証されません。対処: 移植性重視ならcommand -vへ置き換えます。
導入・互換性情報
typeはBashなどで一般的な組み込みですが、POSIXでの移植性を最優先するならcommand -vを使うほうが安全です。typeのオプション体系はシェル実装によって異なります。
- Debian GNU/Linux / 13 / Bash 5.2.37
注意点 / セキュリティリスク
危険度は低い確認コマンドです。ただしBash固有の機能なので、POSIX sh前提の説明や移植性重視のスクリプトではcommand -vのほうが適しています。
FAQ
-
Q. typeとwhichはどう違いますか。 A. typeは現在のシェルがその名前をどう解決するかを見るのに向き、whichは外部コマンド中心で実装差もあります。
-
Q. type -aは何に使いますか。 A. 同名のalias、関数、外部コマンドが複数ある時に、候補をまとめて確認するために使います。
関連用語
参照リンク
- カテゴリー: Shell And Cli
- シェル依存: Bash
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎