シェル組み込みコマンドとは何ですか?それらを識別する方法は?

Linuxでは、ユーザーがシェルを起動するたびに、いくつかのコマンドがメモリにロードされます。これらのコマンドはシェルの一部であり、シェル組み込みコマンドとも呼ばれます。

この記事では、Linuxコマンドがシェル組み込みであるかどうかを確認する方法に関するガイドとともに、シェル組み込みについて詳しく説明します。

シェルビルトインとは何ですか?

シェルビルトインは、その名前が示すように、シェルに組み込まれているコマンドです。これは、一般的に使用されるコマンドをハードドライブで検索するよりも、RAMから実行する方が高速であるためです。シェル開発者は、メモリからのデータのロードがディスクと比較して高速であるため、これは適切なトレードオフであると考えています。

最近の多くのシェルの一般的な例はディレクトリを変更するcdコマンドです。このコマンドは1回のセッションで何度も使用するため、実行を高速化するためにメモリにロードするのが理にかなっています。

関連:より高速なRAMとより多くのRAM:どちらがパフォーマンスに優れていますか?

シェル組み込みコマンドを識別する方法は?

コマンドが通常のコマンドであるかシェル組み込みであるかを判別するには、 typeコマンドを使用します。 Linuxコマンドがシェル組み込みであるかどうかを確認するための基本的な構文は次のとおりです。

 type -t commandname

…ここで、 commandnameは、チェックするコマンドの名前です。

たとえば、cdコマンドがシェル組み込みであるかどうかを確認するには、次のようにします。

 type -t cd

出力:

 builtin

出力にファイルエイリアスなどの組み込み以外のものが表示される場合、そのコマンドはシェル組み込みコマンドではありません。

Bashでは、コマンド-vを使用して、コマンドがシェル組み込みであるかどうかを識別することもできます。組み込みの場合、出力にはコマンド名が表示されます。たとえば、cdコマンドがシェル組み込みであるかどうかを確認するには、次のようにします。

 command -v cd

または、 whichコマンドを使用することもできます。このコマンドは、コマンドの絶対パス名、またはそれがシェル組み込みまたはエイリアスであるかどうかを示します。 whichコマンドは、使用するシェルによっては、それ自体が組み込まれているシェルである場合があります。

シェルのマニュアルページには、シェルの組み込みコマンドもリストされています。 Zshはページ全体をビルトインに捧げます。機能満載のzshがどれほど多くのパワーユーザーに愛されているかを考えると、これは驚くべきことではありません。

シェルごとに組み込みが異なるため、シェル組み込みである可能性のある共通のユーティリティが、システム上のスタンドアロン実行可能ファイルとして存在する場合もあります。通常のコマンドを使用する場合は、絶対パス名を使用してください。

これで、通常のコマンドとシェルビルトインの違いがわかりました

元のUnix時代のミニコンピューターよりもはるかに強力なローエンドの最新コンピューターでさえ、シェル開発者はより多くのビルトインを使用してシステムを高速化できます。特定のオプションが必要な場合は、通常のコマンドを使用しながら、シェルビルトインを利用できます。

シェルが異なれば機能も異なるため、組み込みも異なります。適切なシェルを選択することは、どの機能があなたにとって重要であるかという問題です。