
【Linux】シェルの組み込みコマンドと外部コマンド
コマンドの種類
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は一度実行した外部コマンドのパスを記憶し、再度実行する際のパフォーマンスを向上させます。これらのコマンドの特性を理解し、効率的に使用することで、シェルスクリプトやコマンドライン操作を最適化することができます。