(2025-05-24 初稿)
Bashを使うようになってかなり経つが、恥ずかしながら組み込みコマンドのヘルプの出し方が知らなかったので、以下にメモする。
筆者の環境
Linux hoge 6.1.0-35-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.137-1 (2025-05-07) x86_64 GNU/Linux GNU bash, バージョン 5.2.15(1)-release-(x86_64-pc-linux-gnu)
ことの発端は、筆者が組み込みコマンドのreadのオプションを調べようとしたが、ヘルプの使い方がよくわからなかったので、改めて調べることにした。
Bashには組み込みコマンドがあり、起動が速いためShell スクリプトの高速実行等に役立っている。
組み込みコマンドの一覧を調べる方法は、以下のとおり。
$ help $ bash -c help # 現在のshellがbashでない場合
$ help GNU bash, バージョン 5.2.15(1)-release (x86_64-pc-linux-gnu) これらのシェルコマンドは内部で定義されています。`help' と入力して一覧を参照してください。 `help 名前' と入力すると `名前' という関数のより詳しい説明が得られます。 'info bash' を使用するとシェル全般のより詳しい説明が得られます。 `man -k' または info を使用すると一覧にないコマンドのより詳しい説明が得られます。 名前の後にアスタリスク (*) がある場合はそのコマンドが無効になっていることを意味します。 job_spec [&] history [-c] [-d offset] [n] または history -anrw [filename> (( expression )) if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS;> (中略) help [-dms] [pattern ...] { COMMANDS ; }
個別に組み込みコマンドか外部コマンドか調べる方法は、以下のとおりで、ここでは例としてreadを調べる。
$ type read read はシェル組み込み関数です
最初のコメントにもあるように、例えばreadのヘルプを見る方法は、以下のとおり。
$ help read read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...] Read a line from the standard input and split it into fields. (後略)
余談だが、調べていて echo コマンドは、組み込みコマンドと外部コマンドの両方があるよう。
$ type echo echo はシェル組み込み関数です $ which echo /usr/bin/echo
両方ある場合は、組み込みコマンドが優先されて実行されるんだろうなぁ…