Linuxでシェル組み込みコマンドを確実に実行したいと思ったことはありませんか?
そんなときに利用するのがbuiltinコマンドです。
builtinコマンドを使うと、同じ名前のシェル関数が定義されている場合でも、Bashのシェル組み込みコマンド(ビルトインコマンド)を直接実行できます。
シェルスクリプトやBashのカスタマイズを行う際に役立つ、少し上級者向けのコマンドです。
この記事では、builtinコマンドの基本的な使い方から、シェル関数との関係、commandとの違い、実践的な利用例まで初心者向けに分かりやすく解説します。
builtinコマンドとは
builtinは、Bashに組み込まれているビルトインコマンドを直接実行するためのシェル組み込みコマンドです。
同じ名前のシェル関数が定義されていても、元のビルトインコマンドを呼び出せます。
builtinコマンドの基本構文
builtin コマンド名 [引数]
例えば、ビルトインのcdを実行する場合は次のように記述します。
builtin cd /tmp
通常のcdと同じ動作ですが、シェル関数を経由せずビルトインを直接実行します。
基本的な利用例
次のようなシェル関数が定義されているとします。
cd() {
echo "Hook!"
}
通常のcdでは関数が実行されます。
cd /tmp
一方、builtinを利用すると元のビルトインコマンドを実行できます。
builtin cd /tmp
シェル関数で利用する例
シェル関数内で元のビルトインを呼び出す用途でよく利用されます。
cd() {
echo "Move: $1"
builtin cd "$1"
}
ログを表示しながら、本来のcdも実行できます。
aliasとの違い
builtinはシェル関数を回避するためのコマンドです。
エイリアスを回避する用途ではありません。
エイリアスを無視したい場合は、commandコマンドを利用します。
commandとの違い
| コマンド | 用途 |
|---|---|
builtin |
ビルトインコマンドを直接実行する |
command |
エイリアスを回避してコマンドを実行する |
用途が異なるため、目的に応じて使い分けることが重要です。
typeコマンドで確認する
対象がビルトインコマンドかどうかは、typeコマンドで確認できます。
type cd
ビルトインコマンドであれば、shell builtinと表示されます。
シェルスクリプトで利用するメリット
シェル関数でビルトインコマンドを拡張したい場合でも、元の動作を維持できます。
pwd() {
echo "Current directory:"
builtin pwd
}
独自の処理を追加しながら、本来のビルトインコマンドも実行できます。
builtinとtypeの違い
| コマンド | 役割 |
|---|---|
builtin |
ビルトインコマンドを直接実行する |
type |
コマンドの種類を確認する |
typeはコマンドの種類を調査するためのコマンドであり、builtinのように実行は行いません。
builtinとenableの違い
| コマンド | 用途 |
|---|---|
builtin |
ビルトインコマンドを実行する |
enable |
ビルトインコマンドの有効・無効を切り替える |
enableはビルトインコマンド自体の有効・無効を管理するためのコマンドであり、builtinとは役割が異なります。
利用できるビルトインコマンドを確認する
Bashで利用できるビルトインコマンドは、次のように確認できます。
enable
利用可能なビルトインコマンドの一覧が表示されます。
builtinが利用できるシェル
builtinはBashのシェル組み込みコマンドです。
そのため、すべてのシェルで同じように利用できるわけではありません。
利用する前に、現在のシェルがBashであることを確認すると安心です。
echo $SHELL
よくあるエラー・注意点
builtin: ○○: not a shell builtin と表示される
指定したコマンドはビルトインコマンドではありません。
typeコマンドで種類を確認してください。
type grep
シェル関数が実行される
builtinはビルトインコマンドに対してのみ利用できます。
外部コマンドやシェル関数そのものを実行する用途ではありません。
ほかのシェルでは利用できない
builtinはBashのビルトインコマンドです。
シェルによってはサポート状況や動作が異なるため、利用前にマニュアルを確認してください。
外部コマンドには使えない
grepやcpなどの外部コマンドには利用できません。
ビルトインコマンドだけが対象です。
よくある質問
builtinコマンドは何をするコマンドですか?
Bashのシェル組み込みコマンドを直接実行するためのコマンドです。
commandとの違いは何ですか?
commandはエイリアスを回避してコマンドを実行するためのコマンドです。
builtinはビルトインコマンドそのものを直接実行します。
外部コマンドにも使えますか?
いいえ。
ビルトインコマンドのみが対象です。
シェル関数の中で利用できますか?
はい。
ビルトインコマンドを呼び出す目的でよく利用されます。
どんな場面で使われますか?
シェル関数でビルトインコマンドを拡張する場合や、元のビルトインコマンドを確実に実行したい場合によく利用されます。
まとめ
builtinコマンドは、Linux(Bash)でビルトインコマンドを直接実行するためのシェル組み込みコマンドです。
特に次のコマンドは覚えておくと便利です。
| コマンド | 用途 |
|---|---|
builtin cd /tmp |
ビルトインのcdを直接実行する |
builtin pwd |
ビルトインのpwdを実行する |
type cd |
ビルトインか確認する |
enable |
利用可能なビルトインコマンドを一覧表示する |
echo $SHELL |
現在利用しているシェルを確認する |
Linuxでシェルをカスタマイズする際は、「typeで種類を確認 → シェル関数を定義 → builtinで元のビルトインコマンドを呼び出す → enableで利用可能なビルトインを確認」という流れを覚えておくと、柔軟かつ安全にシェル環境を拡張できるようになります。




コメント