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

シェルのコマンドには,組み込み コマンド(ビルトインコマンド)と外部コマンドがあります. 有名な組み込みコマンドとしては,historycdなどがあります. これらのコマンドはシェル自体に組み込まれているので/binにPATHが通っていなくても使えます.
というよりも/bin下にcdhistoryというプログラムはないです.

> sudo find / -name "mv"
/usr/bin/mv
> sudo find / -name "mkdir"
/usr/bin/mkdir
> sudo find / -name "cd"
> sudo find / -name "history"
> sudo find / -name "alias"

> setenv PATH ""
> ls
ls: Command not found.
> history
    1 9:41  setenv PATH ""
    2 9:41  ls
    3 9:41  history

また,組み込みコマンドに対してはsudoが使えません.組み込みコマンドは/binに置いてないため,sudoが見つけらません.

> sudo cp
cp: missing file operand
Try 'cp --help' for more information.
> sudo cd
sudo: cd: command not found

組み込みコマンドはシェルによって異なります.
例えば,whichコマンドがそうです.
tcshでは

> which which
which: shell built-in command.
> setenv PATH ""
> which which
which: shell built-in command.

となりますが,bashでは

> which which
/usr/bin/which
> PATH=""
> which which
bash: which: No such file or directory

となります.
つまり,tcshwhichは組み込みコマンドですが,bashwhichは外部コマンドです.


tcshの組み込みコマンドリストはこちら

bashの組み込みコマンドリストはこちら
また,bashはcompgen -bという組み込みコマンドで確認できます.

Tweet