builtinコマンドとは?Linuxでシェル組み込みコマンドを実行する方法

Linux

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のビルトインコマンドです。

シェルによってはサポート状況や動作が異なるため、利用前にマニュアルを確認してください。

外部コマンドには使えない

grepcpなどの外部コマンドには利用できません。

ビルトインコマンドだけが対象です。

よくある質問

builtinコマンドは何をするコマンドですか?

Bashのシェル組み込みコマンドを直接実行するためのコマンドです。

commandとの違いは何ですか?

commandはエイリアスを回避してコマンドを実行するためのコマンドです。

builtinはビルトインコマンドそのものを直接実行します。

外部コマンドにも使えますか?

いいえ。

ビルトインコマンドのみが対象です。

シェル関数の中で利用できますか?

はい。

ビルトインコマンドを呼び出す目的でよく利用されます。

どんな場面で使われますか?

シェル関数でビルトインコマンドを拡張する場合や、元のビルトインコマンドを確実に実行したい場合によく利用されます。

まとめ

builtinコマンドは、Linux(Bash)でビルトインコマンドを直接実行するためのシェル組み込みコマンドです。

特に次のコマンドは覚えておくと便利です。

コマンド 用途
builtin cd /tmp ビルトインのcdを直接実行する
builtin pwd ビルトインのpwdを実行する
type cd ビルトインか確認する
enable 利用可能なビルトインコマンドを一覧表示する
echo $SHELL 現在利用しているシェルを確認する

Linuxでシェルをカスタマイズする際は、「typeで種類を確認 → シェル関数を定義 → builtinで元のビルトインコマンドを呼び出す → enableで利用可能なビルトインを確認」という流れを覚えておくと、柔軟かつ安全にシェル環境を拡張できるようになります。

コメント

タイトルとURLをコピーしました