nixCraftは2018年1月21日(米国時間)、「Linux / Unix Bash Shell List All Builtin Commands - nixCraft」において、bashの組み込みコマンドを一覧表示する方法を伝えた。組み込みコマンドとはbash自体に実装されているコマンドであり、bashの振る舞いを変更したり、制御構文として機能したりするコマンドが用意されている。bashの組み込みコマンドは引数なしでhelpと入力することで表示させることができる。

helpでbashの組み込みコマンドの一覧を表示させた場合

$ help
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 JOB_SPEC [&]                       (( expression ))
 . filename [arguments]             :
 [ arg... ]                         [[ expression ]]
 alias [-p] [name[=value] ... ]     bg [job_spec ...]
 bind [-lpvsPVS] [-m keymap] [-f fi break [n]
 builtin [shell-builtin [arg ...]]  caller [EXPR]
 case WORD in [PATTERN [| PATTERN]. cd [-L|-P] [dir]
 command [-pVv] command [arg ...]   compgen [-abcdefgjksuv] [-o option
 complete [-abcdefgjksuv] [-pr] [-o continue [n]
 declare [-afFirtx] [-p] [name[=val dirs [-clpv] [+N] [-N]
 disown [-h] [-ar] [jobspec ...]    echo [-neE] [arg ...]
 enable [-pnds] [-a] [-f filename]  eval [arg ...]
 exec [-cl] [-a name] file [redirec exit [n]
 export [-nf] [name[=value] ...] or false
 fc [-e ename] [-nlr] [first] [last fg [job_spec]
 for NAME [in WORDS ... ;] do COMMA for (( exp1; exp2; exp3 )); do COM
 function NAME { COMMANDS ; } or NA getopts optstring name [arg]
 hash [-lr] [-p pathname] [-dt] [na help [-s] [pattern ...]
 history [-c] [-d offset] [n] or hi if COMMANDS; then COMMANDS; [ elif
 jobs [-lnprs] [jobspec ...] or job kill [-s sigspec | -n signum | -si
 let arg [arg ...]                  local name[=value] ...
 logout                             popd [+N | -N] [-n]
 printf [-v var] format [arguments] pushd [dir | +N | -N] [-n]
 pwd [-LP]                          read [-ers] [-u fd] [-t timeout] [
 readonly [-af] [name[=value] ...]  return [n]
 select NAME [in WORDS ... ;] do CO set [--abefhkmnptuvxBCHP] [-o opti
 shift [n]                          shopt [-pqsu] [-o long-option] opt
 source filename [arguments]        suspend [-f]
 test [expr]                        time [-p] PIPELINE
 times                              trap [-lp] [arg signal_spec ...]
 true                               type [-afptP] name [name ...]
 typeset [-afFirtx] [-p] name[=valu ulimit [-SHacdfilmnpqstuvx] [limit
 umask [-p] [-S] [mode]             unalias [-a] name [name ...]
 unset [-f] [-v] [name ...]         until COMMANDS; do COMMANDS; done
 variables - Some variable names an wait [n]
 while COMMANDS; do COMMANDS; done  { COMMANDS ; }
 $ 

helpの引数に組み込みコマンド名を指定すると、その組み込みコマンドの使い方を表示させることができる。man bashと実行してbashのオンラインマニュアルを調べることで同様の説明を読むこともできるが、helpの方は対象とする組み込みコマンドの説明だけを表示させることができる。

  • helpは組み込みコマンドのそれぞれの使い方を表示させることもできる

    helpは組み込みコマンドの使い方を表示させることもできる

help自体も組み込みコマンドとして実装されている。コマンドはシェルから別のファイルを呼び出すことで実行される。組み込みコマンドはすでにbashの内部に実装された機能であり、別のファイルから呼び出すといったことはしない。組み込みコマンドは通常のコマンドと異なり、bashの内部に実装された機能であるため、bashの内部状態を変更するといった処理を行うことができる。