シェルのコマンドの種類についてのメモ

シェルのコマンドは2種類ある Link to this heading

シェルのコマンドには、内部コマンド(組み込みコマンド)と外部コマンドがある。

コマンドの種類はtypeコマンドで確認できる。

type <コマンド名>

内部コマンド Link to this heading

内部コマンドは、シェルの機能として実装されているコマンドである。たとえば、cd, echo, pwd, typeなどが該当する。

cdコマンドが内部コマンドかtypeコマンドで確認すると、以下のように表示される。

$ type cd
cd is a shell builtin

これより、cdコマンドはシェルの内部コマンドであるとわかる。

外部コマンド Link to this heading

外部コマンドは、シェルの外部にあるプログラムファイルとして実装されているコマンドである。たとえば、ls, cat, grep, findなどが該当する。

lsコマンドが外部コマンドかtypeコマンドで確認すると、以下のように表示される。

$ type ls
ls is /usr/bin/ls

これより、lsコマンドはシェルの外部にあるプログラムファイル/usr/bin/lsとして実装されていることがわかる。つまり、lsコマンドが実行されるとき、シェルは/usr/bin/lsを実行する。

入力されたコマンドが内部コマンドでない場合、シェルは$PATH変数に設定されたディレクトリを順に検索し、最初に見つかったファイルを実行する。$PATH変数に設定されたディレクトリは、echo $PATHで確認できる。

$ echo $PATH
/vscode/vscode-server/bin/linux-x64/89de5a8d4d6205e5b11647eb6a74844ca23d2573/bin/remote-cli:/usr/local/nvm/versions/node/v20.14.0/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

コロン区切りだと見づらいので、改行区切りで表示すると、次のようになる。

$ echo $PATH | tr ':' '\n'
/vscode/vscode-server/bin/linux-x64/89de5a8d4d6205e5b11647eb6a74844ca23d2573/bin/remote-cli
/usr/local/nvm/versions/node/v20.14.0/bin
/usr/local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

シェルはこれらのディレクトリを順に検索し、最初に見つかったファイルを実行する。

参考文献・URL Link to this heading

Licensed under CC BY-NC-SA 4.0
最終更新 6月 10, 2024
Hugo で構築されています。
テーマ StackJimmy によって設計されています。