シェルの組み込みコマンドと外部コマンド

コマンドの種類

Linuxシェルには、組み込みコマンド(内部コマンド)と外部コマンドの2種類があります。

  • 組み込みコマンド(内部コマンド)
     シェル自身に組み込まれているコマンドで、シェルを介して直接実行されます。システムリソースの効率的な利用や高速な実行が可能です。
    例: set コマンド、export コマンド
  • 外部コマンド
     シェルの外部に存在する独立したプログラムで、ファイルシステム上に存在します。シェルがこれらのコマンドを実行するためには、ファイルシステムから読み込む必要があります。
    例: env コマンド、printenv コマンド

コマンドの例

コマンド種類説明
set組み込みシェルの環境変数やシェルオプションを設定または表示します。
export組み込み環境変数を設定し、子プロセスにその変数を継承させます。
env外部現在の環境変数を表示したり、新しい環境変数を設定してコマンドを実行します。
printenv外部環境変数の値を表示します。
コマンドの例

コマンドを判別する type コマンド

type コマンドは、指定したコマンドが組み込みコマンドか外部コマンドかを判別するために使用されます。

setコマンドの場合

setコマンドは、シェルに組み込まれているため「set はシェル組み込み関数です」と表示されます。

user01@ubuntu-vm:~$ type set
set はシェル組み込み関数です
envコマンドの場合

envコマンドであるため、ファイルパスが表示されます。

user01@ubuntu-vm:~$ type env
env は /usr/bin/env です

コマンドのハッシュ

 type コマンドを実行すると「コマンド名 is hashed」と表示されることがあります。bashは一度実行したことがある外部コマンドのパスを記憶しており、パスの記憶が残っている場合に、このような表示をする場合があります。この記憶が辿ることで、そのコマンドを再度、実行する際に高速にコマンドを実行することができます。

まとめ

 Linuxシェルには、シェル内部に組み込まれたコマンドと、シェル外部の独立したプログラムとして存在するコマンドの2種類があります。type コマンドを使用することで、指定したコマンドが組み込みコマンドか外部コマンドかを判別できます。また、bashは一度実行した外部コマンドのパスを記憶し、再度実行する際のパフォーマンスを向上させます。これらのコマンドの特性を理解し、効率的に使用することで、シェルスクリプトやコマンドライン操作を最適化することができます。