Provided by: manpages-ja_0.5.0.0.20131015+dfsg-2_all bug

名前

       bash - GNU Bourne-Again SHell

書式

       bash [options] [file]

著作権

       Bash is Copyright (C) 1989-2011 by the Free Software Foundation, Inc.

説明

       bash  は、標準入力やファイルから読み込んだコマンドを実行する、 sh 互換のコマンド言語インタ
       プリタです。 bash には、Korn シェルや C シェル (kshcsh)   の便利な機能も採り入れられて
       います。

       bash は IEEE POSIX specification (IEEE Standard 1003.1)  の Shell and Utilities に準拠する
       実装を目指しています。 bash はデフォルトで POSIX 準拠に設定することもできます。

オプション

       組み込みコマンド set の説明で述べられている 1 文字のシェルオプションを、  起動時に指定でき
       ます。 それに加えて、bash は以下のオプションを起動時に解釈します。

       -c string -c  オプションが指定されると、コマンドが string から読み込まれます。 string の後
                 に引き数があれば、これらは 位置パラメータ (positional parameter: $0 から始まるパ
                 ラメータ) に代入されます。
       -i        オプションが指定されると、 bash対話的(interactive)  に動作します。
       -l        ログインシェル  (後述の  起動 セクションを参照)  として起動されたかのように bash
                 を動作させます。
       -r        -r オプションが指定されると、 bash制限された状態 (restricted) となります (後
                 述の 制限付きのシェル を参照)。
       -s        -s オプションが指定された場合と、 オプションを全て処理した後に引き数が残っていな
                 かった場合には、 コマンドは標準入力から読み込まれます。 このオプションを使うと、
                 対話的シェルを起動するときに 位置パラメータを設定できます。
       -D        二重引用符によるクォート文字列  (double-quoted  strings)  に  $ が前置されたもの
                 を、全てリストして標準出力に出力します。 これらは、カレントロケールが  C  または
                 POSIX  以外のときに、  翻訳の対象となるべき文字列です。 このオプションを指定する
                 と、 自動的に -n オプションも指定されたことになります。 つまりコマンドは全く実行
                 されません。
       [-+]O [shopt_option]
                 shopt_option  には、組み込みコマンド shopt (後述の シェルの組み込みコマンド を参
                 照) に与えるのと同じシェルのオプションを指定します。  shopt_option  が有効なオプ
                 ションであれば、   -O   でオプションが設定されます。  +O  で設定解除になります。
                 shopt_option を指定しない場合、 shopt で指定できるオプションの名前と値が標準出力
                 に表示されます。 このとき、+O では、入力として再利用できる形で出力されます。
       --        --  はオプションの終わりを示し、それ以降のオプション処理を行いません。 -- 以降の
                 引き数は全て、ファイル名や引き数として扱われます。 引き数 --- と同じです。

       bash が解釈するオプションには複数の文字からなるものもたくさんあります。 このようなオプショ
       ンを認識させるためには、 コマンドライン中で 1 文字のオプションよりも前に置かなければなりま
       せん。

       --debugger
              シェルの実行を開始する前に、デバッグモードを準備します。 拡張デバッグモードを有効に
              します (後述の組み込みコマンド shoptextdebug オプションを参照)。
       --dump-po-strings
              -D  と同じですが、 出力は GNU gettextpo (ポータブルオブジェクト) ファイル形式で
              行われます。
       --dump-strings
              -D と同じです。
       --help 使用方法についてのメッセージを標準出力に表示し、正常終了します。
       --init-file file
       --rcfile file
              対話的シェルとして起動された場合、 個人用の標準の初期化ファイル ~/.bashrc  の代わり
              に file からコマンドを実行します (後述の 起動 セクションを参照)。

       --login
              -l と同じです。

       --noediting
              シェルが対話的動作の場合、コマンドラインを読み込むときに  GNU readline ライブラリを
              使用しません。

       --noprofile
              システム全体用の起動ファイル       /etc/profile        および個人用の初期化ファイル
              ~/.bash_profile,  ~/.bash_login,  ~/.profile のいずれも読み込みません。デフォルトで
              は、 bash はログインシェルとして起動されたときに これらのファイルを読み込みます (後
              述の 起動 セクションを参照)。

       --norc シェルが対話的動作を行う場合に、個人用初期化ファイル ~/.bashrc の読み込み・実行を行
              いません。シェルが sh  として起動された場合には、このオプションはデフォルトで有効に
              なります。

       --posix
              bash  の動作のうち、デフォルトの振舞いが POSIX 標準と異なる部分を、POSIX 標準に準拠
              するように変更します (posix モード)。

       --restricted
              シェルを制限された状態にします (後述の 制限付きのシェル セクションを参照)。

       --verbose
              -v と同じです。

       --version
              実行された bash のバージョン情報を標準出力に表示し、正常終了します。

引き数

       オプション処理の後に引き数が残っており、かつ -c オプションと -s オプションのいずれも指定さ
       れていない場合、 最初の引き数はファイル名とみなされ、 そのファイルにシェルコマンドが記述さ
       れているとみなされます。 このような形で bash が起動された場合、 $0  にそのファイルの名前が
       設定されます  (残りの引き数は位置パラメータに設定されます)。 bash はこのファイルからコマン
       ドの読み込みと実行を行い、そして終了します。 bash の終了ステータスは、  このスクリプト中で
       実行された最後のコマンドの終了ステータスになります。  コマンドが全く実行されなければ、終了
       ステータスは 0 です。 ファイルは最初にカレントディレクトリから探し、見つけられなかった場合
       には、 PATH の中のディレクトリからスクリプトを探します。

起動

       ログインシェル(login   shell)とは、0   番目の引き数の最初の文字が  -  であるシェル、または
       --login オプション付きで起動されたシェルのことです。

       対話的なシェルとは、 オプションでない引き数がなく、 標準入力と標準エラー出力がいずれも端末
       に接続されていて (これは isatty(3) で調べられます)、 -c オプションが指定されていない状態で
       起動されたシェル、または -i オプション付きで起動されたシェルのことです。 bash が対話的に動
       作している場合には、  PS1 が設定され、 $-i が含まれます。 これを利用すると、対話的動作
       の状態であるかどうかを、 シェルスクリプトや起動ファイルの内部で調べられます。

       以下の段落では、 bash がどのように起動ファイルを実行するかを説明します。  以下のファイルの
       いずれかが、  「存在しているが読み込みできない」場合は、 bash はエラーを報告します。ファイ
       ル名に含まれるチルダは、 後述の 展開 セクションにおける チルダ展開  の項目で述べるように展
       開されます。

       bash が対話的なログインシェルとして起動されるか、 --login オプション付きの非対話的シェルと
       して起動されると、 /etc/profile ファイルが存在すれば、 bash はまずここからコマンドを読み込
       んで実行します。   このファイルを読んだ後、   bash~/.bash_profile,  ~/.bash_login,
       ~/.profile をこの 順番で探します。 bash は、この中で最初に見つかり、かつ読み込みが可能であ
       るファイルから コマンドを読み込んで実行します。 --noprofile オプションを使ってシェルを起動
       すれば、 この動作を行わないようにできます。

       ログインシェルが終了するときには、 ~/.bash_logout ファイルがあれば、 bash はこれを読み込ん
       で実行します。

       ログインシェルでない対話的シェルとして起動されると、  ~/.bashrc ファイルがあれば、 bash は
       ここからコマンドを読み込み、実行します。 この動作は --norc  オプションで行わないようにでき
       ます。  --rcfile file オプションを使うと、 コマンドの読み込みと実行を ~/.bashrc からでなく
       file から行わせることができます。

       (例えばシェルスクリプトを実行するために) 非対話的に起動されると、 bash は環境変数 BASH_ENV
       を調べ、この変数が定義されていればその値を展開し、 得られた値をファイル名とみなして、 そこ
       からコマンドの読み込みと実行を行います。 つまり bash  は以下のコマンドが実行されたのと同じ
       ように動作します:
              if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       ただし、ファイル名を探すために PATH 環境変数の値が使われることはありません。

       sh  という名前で bash を起動すると、 bash は古くからある sh の起動動作をできるだけ真似しよ
       うとします。 また POSIX 標準にもできるだけ従おうとします。  対話的なログインシェルとして起
       動されると、  あるいは --login オプション付きの非対話的シェルとして起動されると、 このシェ
       ルはまず  /etc/profile~/.profile   の順でコマンドの読み込みと実行をしようとします。
       --noprofile  オプションを使うと、この動作を行わないようにできます。  sh という名前の対話的
       シェルとして起動されると、 bash は環境変数 ENV  を調べ、この変数が定義されていればその値を
       展開し、  展開で得た値をコマンドの読み込みと実行を行うためのファイル名として使います。  sh
       という名前で起動されたシェルは、  ほかの起動ファイルからコマンドの読み込みと起動を行うこと
       はないので、 --rcfile オプションは全く効果を持ちません。 sh という名前の非対話的シェルとし
       て起動されると、 このシェルはほかの起動ファイルを何も読み込みません。 sh  として起動された
       場合、 bash は起動ファイルの読み込みを行った後に POSIX モードに入ります。

       --posix  コマンドラインオプション等により bashPOSIX モードで起動されると、 bash は起動
       ファイルに関して POSIX 標準に従います。 このモードでは、対話的シェルは ENV  環境変数を展開
       し、 展開して得られた名前のファイルからコマンドの読み込みと実行を行います。 ほかの起動ファ
       イルは全く読み込みません。

       bash は、リモートシェルデーモン rshd やセキュアシェルデーモン sshd  によって実行された場合
       など、標準入力がネットワーク接続に接続された 状態で実行されたかどうかを調べます。 この方法
       によって実行されていると bash が判断した場合、 ~/.bashrc  が存在し、かつ読み込み可能であれ
       ば、  bash  はコマンドをこのファイルから読み込んで実行します。 sh として呼び出された場合に
       は、この動作は行いません。 --norc オプションを使えばこの動作を禁止できますし、 --rcfile オ
       プションを使えばほかのファイルを読ませるようにもできます。 しかし一般的には rshd は これら
       のオプションを付けてシェルを起動しませんし、 指定もできないようになっています。

       シェルが実ユーザ (グループ) ID と異なる実効ユーザ (グループ) ID で起動され、 かつ -p  オプ
       ションが与えられていない場合は、  起動ファイルは全く読み込まれず、シェル関数は環境から継承
       されず、 SHELLOPTS, BASHOPTS, CDPATH, GLOBIGNORE が環境変数に含まれていても無視され、 実効
       ユーザ  ID には実ユーザ ID が設定されます。 -p オプションが起動時に与えられた場合、 起動時
       の動作は同じですが、 実効ユーザ ID は再設定されません。

定義

       このドキュメントの残りの部分では、 以下の定義を使用します。
       ブランク (blank)
              空白文字またはタブ文字
       単語 (word)
              シェルが 1 単位とみなす文字の並び。 トークン (token) とも言われます。
       名前 (name)
              英数字とアンダースコア文字だけから構成され、 かつ最初の文字が英字かアンダースコア文
              字である 単語識別子 (identifier) とも言われます。
       メタ文字 (metacharacter)
              クォートされていない場合に、単語区切りとなる文字。 以下の文字のうちのいずれかです:
              |  & ; ( ) < > space tab
       制御演算子 (control operator)
              制御機能を持つ トークン。 以下のシンボルのうちのいずれかです:
              || & && ; ;; ( ) | |& <newline>

予約語

       予約語 (reserved word) とはシェルにとって特別な意味を持つ単語です。 以下の単語がクォートさ
       れておらず、 かつ単純なコマンド (simple command) の 先頭の単語 (後述の  シェルの文法  を参
       照) であるか、 case コマンドや for コマンドの 3 番目の単語である場合には、予約語として認識
       されます:

       ! case  do done elif else esac fi for function if in select then until while { }  time  [[
       ]]

シェルの文法

   単純なコマンド (Simple Commands)
       単純なコマンド  (simple  command)  とは、 変数の代入を並べたもの (これは省略可能です) の後
       に、  ブランク区切りの単語とリダイレクションを記述し、  最後に制御演算子を置いたものです。
       最初の単語は実行するコマンドを指定します。  これは 0 番目の引き数となります。 残りの単語は
       起動されるコマンドに引き数として渡されます。

       単純なコマンドの返り値はコマンドの終了コードですが、シグナル n  を受けてコマンドが終了した
       場合には 128+n となります。

   パイプライン (Pipeline)
       パイプライン  (pipeline)は、制御演算子  |  または |& で区切った 1 つ以上のコマンドの並びで
       す。 パイプラインのフォーマットを以下に示します:

              [time [-p]] [ ! ] command [ [||&] command2 ... ]

       command の標準出力は command2 の標準入力にパイプで接続されます。 この接続は、 コマンドで指
       定したどのリダイレクションよりも先に実行されます  (後述の リダイレクト を参照)。 |& を使う
       と、command の標準エラー出力もパイプを通して  command2  の標準入力に接続されます。  これは
       2>&1  | の短縮形です。 この標準エラー出力の暗黙のリダイレクションは、 コマンドに指定された
       全てのリダイレクションの後に実行されます。

       pipefail オプションが有効になっている場合を除き、 パイプラインの返却ステータスは最後のコマ
       ンドの終了ステータスになります。  pipefail が有効になっている場合には、 0 以外のステータス
       を返した最後の (一番右の) コマンドの値が パイプラインの返却ステータスになり、 全てのコマン
       ドが正常終了した場合にのみ  0 になります。 パイプラインの前に、予約語である ! がある場合、
       そのパイプラインの終了ステータスは上記の終了ステータスを 論理否定したものになります。 値を
       返す前に、シェルはパイプライン中の全てのコマンドが終了するのを待ちます。

       パイプラインの前に予約語  time がある場合、コマンドの実行にかかった 経過時間・ユーザ時間・
       システム時間がパイプラインの終了時に報告されます。 -p オプションを指定すると、  出力フォー
       マットが POSIX 仕様に変わります。 シェルが posix モード のときには、 後に続くのが `-' で始
       まるトークンであれば time を予約語と認識しません。 変数 TIMEFORMAT  には、経過時間情報の表
       示の仕方を指定するフォーマット文字列を  設定できます  (後述の シェル変数 の項の TIMEFORMAT
       に関する説明を参照)。

       シェルが posix モード のときには、time の直後が 改行でもかまいません。  この場合、シェルと
       子プロセスがそれまでに消費した ユーザ時間とシステム時間を出力します。 このときにも、経過時
       間情報のフォーマットを変数 TIMEFORMAT で指定できます。

       パイプライン中の各コマンドは、それぞれ別のプロセスとして (つまりサブシェル内で) 実行されま
       す。

   リスト
       リスト  (list) とは、1つ以上のパイプラインを演算子 ;, &, &&, || のいずれかで区切って並べた
       ものです。パイプラインの最後に ;, &, <newline> のいずれかを置くこともできます。

       リスト演算子のうち、 &&|| の優先順位は同じです。これらの次に、 ;& が同じ優先順位で
       続きます。

       リスト 中では、コマンドの区切りとして、 セミコロンの代わりに一つ以上の改行が使われることも
       あります。

       コマンドが制御演算子 & で終わっている場合、シェルはコマンドをサブシェル内で バックグラウン
        (background) で実行します。 シェルはコマンドが終了するのを待たずに、返却ステータス 0 を
       返します。 コマンドを ; で区切った場合には、これらは順番に実行されます。  シェルはそれぞれ
       のコマンドが終了するのを順番に待ちます。  返却ステータスは、最後に実行したコマンドの終了ス
       テータスになります。

       AND リストと OR リストは、それぞれ制御演算子 &&|| で区切られたパイプラインの並びです。
       AND リストと OR リストは左結合で実行されます。 AND リストは

              command1 && command2

       という形式であり、  command1  が終了ステータス  0 を返した場合に限り command2 が実行されま
       す。

       OR リストは

              command1 || command2

       という形式であり、 command1 が 0 以外の終了ステータスを返した場合に限り command2  が実行さ
       れます。 AND リストと OR リストの返却ステータスは、 リスト中で最後に実行されたコマンドの終
       了ステータスです。

   複合コマンド (Compound Commands)
       複合コマンド (compound command) を以下に示します:

       (list) list はサブシェル内で実行されます (後述の コマンド実行環境 の項を参照)。 シェルの環
              境に影響を与えるような変数の代入や組み込みコマンドは、 コマンドの終了後に影響を残し
              ません。 返却ステータスは list の終了ステータスです。

       { list; }
              list が単に現在のシェル環境で実行されます。 list の最後は改行文字かセミコロンでなけ
              ればなりません。これは グループコマンド(group command) と呼ばれます。返却ステータス
              は list の終了ステータスです。 メタ文字である () と違い、 {}予約語 であ
              り、予約語として認識される場所に現われる必要があることに注意してください。 これらは
              単語分割の対象とならないため、 リスト  との間が空白またはシェルのメタ文字で分かれて
              いる必要があります。

       ((expression))
              expression が後述の 算術式評価 で説明される規則に従って評価されます。 式の値が 0 で
              ない場合、返却ステータスは 0 になります。そうでない場合、 返されるステータスは 1 に
              なります。これは let "expression" と全く同じものです。

       [[ expression ]]
              条件式 expression の評価値に従って 0 または 1 を返します。 式は後述の 条件式 で説明
              する、プライマリによって構成されます。 単語分割とパス名展開は [[]] の間の単語に
              対しては行われません。   チルダ展開、パラメータと変数の展開、算術式展開、コマンド置
              換、 プロセス置換、クォート除去は実行されます。 -f などの条件演算子がプライマリとし
              て認識されるためには、 クォートされていてはいけません。

              [[ においては、< 演算子と > 演算子は、 現在のロケールにおける辞書順で比較します。

              == 演算子と != 演算子が使われたとき、 演算子の右の文字列はパターンと解釈され、 後述
              のパターンマッチングで説明する規則に従ってマッチングが行われます。 シェルオプション
              nocasematch が有効であれば、 アルファベットの大文字と小文字を考慮せずにマッチングが
              行われます。 返り値は、== 演算子では文字列がマッチしたときに、 !=  演算子では文字列
              がマッチしなかったときに  0 となり、 そうでない場合に 1 となります。 パターン中のど
              の部分でも、クォートすることで、 ただの文字列としてマッチングさせることができます。

              そのほか、二項演算子 =~ もあります。 優先順位は ==!=  と同じです。  これを使う
              と、右辺の文字列は拡張正規表現とみなされ、   それに従って  (regex(3)  にあるように)
              マッチングが行われます。 文字列がパターンにマッチすれば返り値は 0 であり、 マッチし
              なければ返り値は  1 になります。 正規表現が文法的に誤っていれば、条件式の返り値は 2
              になります。 シェルオプション nocasematch が有効であれば、 アルファベットの大文字と
              小文字を考慮せずにマッチングが行われます。 パターン中のどの部分でも、クォートするこ
              とで、 ただの文字列としてマッチングさせることができます。  正規表現中の括弧による部
              分式にマッチした部分文字列は、配列変数  BASH_REMATCH  に保存されます。 BASH_REMATCH
              のインデックス   0   の要素は、文字列のうち正規表現全体にマッチした部分になります。
              BASH_REMATCH  のインデックス n の要素は、文字列のうち、 正規表現中の n 番目の括弧に
              よる部分式にマッチした部分になります。

              式は以下の演算子を使って繋げられます。 以下に演算子を優先度の順に示します:

              ( expression )
                     expression  の値を返します。これを用いて、  演算子の通常の優先度を変更できま
                     す。
              ! expression
                     expression が偽ならば真になります。
              expression1 && expression2
                     expression1expression2 が両方とも真であれば真になります。
              expression1 || expression2
                     expression1expression2 のどちらかが真であれば真となります。

              expression1  の値だけで条件式全体の返り値が決定できれば、  &&  演算子と || 演算子は
              expression2 を実行しません。

       for name [ [ in [ word ... ] ] ; ] do list ; done
              in に続く単語のリストが展開され、要素のリストが生成されます。 変数 name  には、この
              リストの各要素が順番にセットされ、そのたびに list が実行されます。「in word」が省略
              された場合、 for コマンドは、設定されている位置パラメータそれぞれに対して list を一
              度ずつ実行します(後述の パラメータ を参照)。 返却ステータスは実行された最後のコマン
              ドの終了ステータスになります。 in に続く要素を展開した結果が空となった場合、 コマン
              ドは全く実行されず、返却ステータス 0 が返されます。

       for (( expr1 ; expr2 ; expr3 )) ; do list ; done
              最初に、算術式  expr1  が、後述の 算術式評価 で説明される規則に従って評価されます。
              次に、算術式 expr2 がゼロになるまで繰り返し評価されます。 算術式 expr2 の評価結果が
              ゼロでなければ、そのたびごとにlistが実行され、 算術式 expr3 が評価されます。 どの算
              術式も、省略された場合は、 評価結果が 1 であったものとして振舞います。 返却ステータ
              スは  list 中で実行された 最後のコマンドの終了ステータスとなりますが、 算術式のいず
              れかが不正である場合には偽となります。

       select name [ in word ] ; do list ; done
              in に続く単語のリストが展開され、要素のリストが生成されます。  展開された単語の集合
              が番号付きで標準エラー出力に出力されます。  「in  word」が省略された場合、 位置パラ
              メータが出力されます  (後述の  パラメータ  を参照)。続いて  PS3  プロンプトが表示さ
              れ、標準入力から  1 行の読み込みが行われます。 表示された単語のいずれかに対応する数
              字がこの行に含まれていれば、 name  の値としてその単語が設定されます。  行が空であれ
              ば、単語とプロンプトが再び表示されます。  EOF を読み込むとコマンドが終了します。 こ
              れ以外の値の場合には、 name には空文字列が設定されます。読み込んだ行は変数 REPLY に
              格納されます。  break  コマンドが実行されるまで、選択を行うたびに list が実行されま
              す。 select の終了ステータスは、 list  中で最後に実行したコマンドの終了ステータスで
              すが、 コマンドが全く実行されなかった場合には 0 となります。

       case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
              case  コマンドは最初に word を展開し、それぞれの pattern に対して順にマッチングを試
              みます。 マッチングの際にはパス名展開 (後述の パス名展開 を参照) と同じ規則が用いら
              れます。   word  には、チルダ展開、パラメータと変数の展開、算術式展開、  コマンド置
              換、プロセス置換、クォート除去が実行されます。  それぞれの   pattern   は、チルダ展
              開、パラメータと変数の展開、 算術式展開、コマンド置換、プロセス置換、クォート除去の
              うえで比較されます。 シェルオプション nocasematch が有効であれば、 アルファベットの
              大文字と小文字を考慮せずにマッチングが行われます。 マッチするものが見つかると、これ
              に対応する list が実行されます。 ;; 演算子を使うと、 最初にマッチしたパターン以降の
              マッチングは試みられません。 ;; の代わりに ;& を使うと、 その次のパターンに対応する
              list の実行に続きます。 ;; の代わりに ;;& を使うと、 次のパターンがあればそのマッチ
              ングを試み、  マッチすれば対応する  list  を実行します。 マッチするパターンが無けれ
              ば、終了ステータスは 0 になります。 マッチするものがあったら、終了ステータスは list
              中で最後に実行されたコマンドの終了ステータスになります。

       if list; then list; [ elif list; then list; ] ... [ else list; ] fi
              最初に if list が実行されます。list の終了ステータスが 0 ならば、then list が実行さ
              れます。 そうでなければ elif list がそれぞれ順番に実行され、 list  の終了ステータス
              が  0  ならば、対応する  then  list  が実行され、コマンドが終了します。そうでなけれ
              ば、else list が (もし存在すれば) 実行されます。 終了ステータスは最後に実行されたコ
              マンドの終了ステータスですが、 真と評価された条件が全くない場合には 0 となります。

       while list-1; do list-2; done
       until list-1; do list-2; done
              while  コマンドは、list-1 中の最後のコマンドが終了ステータス 0 を返す間、繰り返して
              list-2 を実行します。until コマンドは while コマンドとほぼ同じですが、 評価の条件が
              逆となる点が異なります。 list-2list-1 中の最後のコマンドが 0 以外の終了ステータ
              スを返す限りずっと実行されます。 while  コマンドと  until  コマンドの終了ステータス
              は、  do list-2 で実行された最後のコマンドの終了ステータスになりますが、 コマンドが
              全く実行されなかった場合には 0 になります。

   コプロセス (Coprocesses)
       コプロセス (coprocess) とは、予約語 coproc で始まるシェルのコマンドのことです。 コプロセス
       は、コマンドが制御演算子 & で終わっているときのように、 サブシェルで非同期に実行されます。
       実行したシェルとコプロセスの間には、双方向のパイプが設けられます

       コプロセスのフォーマットを以下に示します:

              coproc [NAME] command [redirections]

       これにより NAME という名前のコプロセスが作られます。 NAME が指定されない場合、デフォルトの
       名前は COPROC となります。 command単純なコマンド (前述) のときには、 NAME は指定できま
       せん。   指定すると、単純なコマンドの最初の単語として扱われます。   コプロセスが実行される
       と、実行したシェルのコンテキストに NAME という名前の配列変数 (後述の 配列 を参照) が作られ
       ます。 command の標準出力は、実行しているシェルのファイル・ディスクリプターの一つと パイプ
       によって接続されます。  このファイル・ディスクリプターは  NAME[0] に代入されます。 command
       の標準入力は、実行しているシェルのファイル・ディスクリプターの一つと  パイプによって接続さ
       れます。  このファイル・ディスクリプターは NAME[1] に代入されます。 このパイプは、コマンド
       で指定されたほかのリダイレクトより先に設けられます (後述の リダイレクト  を参照)。  ファイ
       ル・ディスクリプターは、標準的な単語展開により、  シェルのコマンドの引き数やリダイレクショ
       ンに指定できます。 コプロセスの実行で生成されたシェルのプロセス ID は、変数 NAME_PID  の値
       になります。 コプロセスの終了を待つには、組み込みコマンド wait を使います。

       コプロセスの返却ステータスは、command の終了ステータスです。

   関数定義
       シェル関数とは、単純なコマンドとして呼び出されて、  新しい位置パラメーターの一式を持つ複合
       コマンドを実行するもののことです。 シェル関数は以下の形式で宣言します:

       name () compound-command [redirection]
       function name [()] compound-command [redirection]
              これによって name という名前の関数が定義されます。 予約語 function は省略可能です。
              予約語  function  が与えられた場合、括弧は省略可能です。 関数の 実体 は複合コマンド
              compound-command です (前述の 複合コマンド を参照)。 多くの場合、 { と } に挟まれた
              コマンドの リスト が用いられますが、 前述の 複合コマンド で挙げたどのコマンドを用い
              てもかまいません。     単純なコマンドの名前として     name     を指定するといつでも
              compound-command が実行されます。 関数の定義で指定されたリダイレクション (後述の 
              ダイレクト を参照) は、関数が実行されるときに処理されます。  関数定義の終了ステータ
              スは、文法エラーが起きた場合や、 読み込み専用の関数が同じ名前で定義されていた場合を
              除き、0 です。 関数を実行したときの終了ステータスは、実体の中で最後に実行されたコマ
              ンドの終了ステータスになります (後述の 関数 を参照)。

コメント (COMMENTS)

       シェルが対話的でない場合、または対話的なシェルにおいて  組み込みコマンドの  shopt に対する
       interactive_comments オプションが有効となっている (後述の シェルの組み込みコマンド  を参照
       すること)  場合には、 # で始まる単語があると、その単語とその行の残りの文字が全て無視されま
       す。  対話シェルでは、  interactive_comments  オプションが有効でなければコメントは使えませ
       ん。対話シェルでは、 interactive_comments オプションはデフォルトで有効になっています。

クォート

       クォート (quoting) を使うと、 特定の文字や単語が持つシェルに対する特別な意味をなくせます。
       クォートを用いると、特殊文字の特殊な扱いを無効にしたり、  予約語が予約語として識別されるこ
       とを防いだり、 パラメータの展開を防いだりできます。

       前述の  定義 で挙げたメタ文字 (metacharacters) にはそれぞれ特殊な意味があるので、 その文字
       自身を表すためにはクォートしなければなりません。

       コマンドの履歴展開の機能 (後述の 履歴の展開 を参照)  が使われているときには、履歴展開 文字
       (通常は !) の 履歴展開を防ぐためにはクォートしなければなりません。

       クォートの方法には、  エスケープ文字(escape character), シングルクォート、ダブルクォートの
       3 種類があります。

       クォートされていないバックスラッシュ   (\)   は   エスケープ文字    です。エスケープ文字は
       <newline>  という例外を除き、 後に続く文字 1 つの文字としての値を保持させます。 \<newline>
       という組み合わせが現われ、        かつバックスラッシュ自身がクォートされていない場合には、
       \<newline>  は行を継続することを表します (つまり、入力ストリームから改行文字が削除され、実
       質的に無視されます)。

       シングルクォートで文字を囲むと、    クォート内部のそれぞれの文字は文字としての値を保持しま
       す。 シングルクォートの間にシングルクォートを置くことはできません。 これはバックスラッシュ
       を前に付けても同じです。

       ダブルクォートで文字を囲むとクォート内部の全ての文字は文字としての値を  保持しますが、  $,
       `,  \ は例外となります。 履歴展開が有効なときには、 ! がこれに加わります。 $` はダブル
       クォートの内部でも特殊な意味を失いません。 バックスラッシュの場合は、次の文字が $,  `,  ",
       \, <newline> のいずれかである場合に限り特殊な意味を失いません。 前にバックスラッシュを付け
       れば、 ダブルクォート文字をダブルクォートによるクォートの内部で クォートできます。  履歴展
       開は有効であれば実行されますが、ダブルクォート中の  ! がバックスラッシュでエスケープされて
       いる場合を除きます。 ! の前のバックスラッシュは削除されません。

       特殊なパラメータである *@ は、ダブルクォート内部でも特殊な意味を失いません (後述の  
       ラメータ を参照)。

       $'string' の形式を持つ単語は特殊な扱いを受けます。 この単語は string に展開され、 それから
       ANSI C 標準で仕様が決められている、 バックスラッシュでエスケープされている文字に置き換えら
       れます。  バックスラッシュエスケープシーケンスは、 (もし存在すれば) 以下のようにデコードさ
       れます:
              \a     警告 (ベル)
              \b     バックスペース
              \e
              \E     エスケープ文字
              \f     フォームフィード
              \n     改行
              \r     復帰 (carriage return)
              \t     水平タブ
              \v     垂直タブ
              \\     バックスラッシュ
              \'     シングルクォート
              \"     ダブルクォート
              \nnn   8 進値が nnn である 8 ビット文字 (1 文字につき数字 1〜3 桁)
              \xHH   16 進値が HH である 8 ビット文字 (16 進で 1〜2 桁)。
              \uHHHH 16 進値が HHHH であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜4 桁)。
              \UHHHHHHHH
                     16 進値が HHHHHHHH であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜8 桁)。
              \cx    control-x の文字

       展開された結果はシングルクォートされているのと同じ状態で、  ドル記号は存在しなかったかのよ
       うに扱われます。

       ダブルクォートされた文字列の前にドル記号があると   ($"string")、  文字列は現在のロケールに
       従って変換されます。 現在のロケールが C または POSIX ならば、 ドル記号は無視されます。文字
       列が変換されたり置換されたりした場合には、  その結果はダブルクォートされているのと同じ状態
       になります。

パラメータ

       パラメータ (parameter) は値を保持するためのものです。パラメータは 名前、 数字、後述の 特殊
       なパラメータ    で挙げる特殊文字のいずれかで表現されます。シェルでの用法においては、    
       数(variable) とは 名前 で表現されたパラメータです。 変数はと 0  個以上の属性を持ちます。
       属性は declare 組み込みコマンド (後述の シェルの組み込みコマンドdeclare の項を参照) で
       設定されます。

       パラメータに値が代入されていれば、 そのパラメータは設定 (set) されていると言われます。  空
       文字列も有効な値です。一度値を設定すると、組み込みコマンドの    unset   を使わなければ削除
       (unset) できません (後述の シェルの組み込みコマンド を参照)。

       変数 には、以下の構文で代入できます:

              name=[value]

       value が与えられなかった場合、変数には空文字列が代入されます。全ての value  に対して、チル
       ダ展開、パラメータと変数の展開、コマンド置換、  算術式展開、クォート除去が行われます (後述
       の 展開 を参照)。変数の 整数 属性が設定されている場合 (後述の シェルの組み込みコマンド  を
       参照)、$((...)) の展開を使っていなくても value に対しての算術展開が行われます (後述の 算術
       式展開 を参照)。 特殊パラメータ で後述する "$@" という例外を除いて、単語の分割は行われませ
       ん。  パス名展開も実行されません。  代入文は組み込みコマンドの  alias,  declare,  typeset,
       export, readonly, local の引き数でも使われます。

       代入文でシェル変数や配列のインデックスに値を代入する場面では、 += 演算子を使って変数の直前
       の値に追加したり加算したりできます。  += を整数属性が設定された変数に対して使うと、 は算
       術式展開として評価され、 変数の現在の値に加算されます。 += を配列変数への複合代入  (後述の
       配列  を参照) で使うと、 変数の現在の値は (= を使ったときとは違って) 削除されません。 イン
       デックスによる配列の場合は、新しい値が最大のインデックス  より一つ大きいインデックスから配
       列に追加されます。 連想配列の場合は、新しいキーと値の組が追加されます。 文字列の値の変数に
       対して使うと、が展開されて、 変数の元の値の後に追加されます。

   位置パラメータ(Positional Parameters)
       位置パラメータ (positional parameter) は、1 桁以上の数値で表されるパラメータです。ただし 0
       は含みません。  位置パラメータは、シェルが起動されたときにシェルの引き数が代入されますが、
       組み込みコマンドの set を使って代入し直すこともできます。 代入文を使って位置パラメータへの
       代入を行うことはできません。 シェル関数が実行されると、 位置パラメータは一時的に置き換えら
       れます (後述の 関数 を参照)。

       2 桁以上の数値を含む位置パラメータを展開するときには、ブレース ({})   で囲まなければなりま
       せん (後述の 展開 を参照)。

   特殊パラメータ
       シェルはいくつかのパラメータを特別扱いします。    このようなパラメータは参照されるだけであ
       り、 値を代入することは許されません。
       *      (1 から始まる) 全ての位置パラメータに展開されます。  ダブルクォートの内部で展開が行
              われたときは、  それぞれのパラメータを特別な変数である IFS の最初の文字で区切って並
              べた 1 つの単語に展開されます。つまり、 "$*" は "$1c$2c..." と同じです。  ここで  c
              は変数  IFS の値の最初の文字です。 IFS が設定されていなければ、パラメータは空白で区
              切られます。 IFS が空文字列の場合、パラメータの間には区切り文字は入らず、  全てのパ
              ラメータは繋げられます。
       @      (1  から始まる) 全ての位置パラメータに展開されます。 ダブルクォートの内部で展開が行
              われたときは、 それぞれのパラメータは別々の単語に展開されます。 つまり "$@" は "$1"
              "$2" ... と同じです。 単語の中でダブルクォートの展開が行われるときには、 最初のパラ
              メータの展開結果に元の単語のダブルクォートより前の部分が 結び付き、最後のパラメータ
              の展開結果に元の単語のダブルクォートより  後の部分が結び付きます。 位置パラメータが
              ない場合には、"$@"  や  $@  を展開しても無かったことになります  (つまり取り除かれま
              す)。
       #      位置パラメータの個数を示す 10 進値に展開されます。
       ?      最後に実行されたフォアグラウンドのパイプラインの 終了ステータスに展開されます。
       -      現在のオプションフラグに展開されます。 これは起動のときに指定したり、組み込みコマン
              ド set で設定したり、( -i オプション等で) シェル自身が設定したりします。
       $      シェルのプロセス ID に展開されます。 () を使ったサブシェルの内部では、$  はサブシェ
              ルではなく、 現在のシェルのプロセス ID に展開されます。
       !      最後に実行されたバックグラウンド (非同期) コマンドの プロセス ID に展開されます。
       0      シェルまたはシェルスクリプトの名前に展開されます。 これはシェルの初期化時に設定され
              ます。 コマンドを記述したファイルを指定して bash を起動した場合、 $0 にはそのファイ
              ルの名前が設定されます。  -c オプションを付けて bash を起動した場合、実行する文字列
              の後に引き数があれば、その最初の値が $0 に設定されます。引き数がなければ、 bash  を
              起動するときに使用した名前が引き数 0 として与えられ $0 に設定されます。
       _      シェルの起動時には、環境または引き数リストで渡された、 実行するシェルまたはシェルス
              クリプトの絶対パス名が設定されます。 その後では、直前のコマンドに対する最後の引き数
              (展開後のもの)  に展開されます。 また、実行する各コマンドの完全なパス名が設定され、
              そのコマンドの環境にエクスポートされます。 メールをチェックするときには、  このパラ
              メータは現在チェックしているメールファイル名を保持します。

   シェル変数
       以下の変数はシェルが設定します:

       BASH   現在実行している bash を起動したときに使われた、完全なファイル名に展開されます。
       BASHOPTS
              コロン区切りのリストで、有効になっているシェルのオプションを示します。 リスト中のそ
              れぞれの単語は、組み込みコマンド shopt-s オプション (後述の  シェルの組み込みコ
              マンド  を参照)  に対する有効な引き数になっています。 BASHOPTS に現われるオプション
              は、shopt コマンドで on と表示されるものです。 もし bash を起動したときに、この変数
              が環境変数に設定されていれば、 起動ファイルを読み込む前に、リストにある全てのシェル
              オプションが 有効に設定されます。 この変数は読み込み専用です。
       BASHPID
              現在の bash のプロセス ID  に展開されます。  bash  を再初期化しないサブシェルのよう
              な、いくつかの環境においては、 $$ と値が異なります。
       BASH_ALIASES
              エイリアスの内部的なリストに対応する連想配列変数です。 エイリアスは通常、組み込みコ
              マンド alias で操作します。  この配列に要素を追加すると、エイリアスのリストにも追加
              されます。 配列から要素を削除すると、エイリアスがリストから削除されます。
       BASH_ARGC
              bash   の現在の呼び出しスタックについて、フレームごとの引き数の数が並んだ配列変数で
              す。現在のサブルーチン (シェル関数や、.source で実行されたスクリプト)  の引き数
              の数が、スタックの一番上に置かれます。サブルーチンが実行されると、渡されたパラメー
              タの数が BASH_ARGC に追加されます。シェルが BASH_ARGC  を設定するのは、拡張デバッグ
              モードのときだけです (後述の組み込みコマンド shoptextdebug オプションを参照)。
       BASH_ARGV
              bash の現在の呼び出しスタックについて、全ての引き数が並んだ配列変数です。一連の呼び
              出しのうち、最後に呼ばれたサブルーチンの最後の引き数が、スタックの一番上に置かれま
              す。最初に呼ばれたサブルーチンの最初の引き数が、スタックの一番下になります。サブ
              ルーチンが実行されると、渡されたパラメータが   BASH_ARGV   に追加されます。シェルが
              BASH_ARGV  を設定するのは、拡張デバッグモードのときだけです (後述の組み込みコマンド
              shoptextdebug オプションを参照)。
       BASH_CMDS
              bash が内部に持つ、コマンドのハッシュテーブルに対応する 連想配列変数です。 ハッシュ
              テーブルは通常、組み込みコマンド   hash   で操作します。   この配列に要素を追加する
              と、ハッシュテーブルにも追加されます。 配列から要素を削除すると、ハッシュテーブルか
              ら削除されます。
       BASH_COMMAND
              現在実行しているか実行しようとしているコマンドです。 ただし、トラップによってシェル
              が実行しているコマンドは別で、 その場合は、トラップの発動時に実行していたコマンドに
              なります。
       BASH_EXECUTION_STRING
              起動オプション -c で指定されたコマンドです。
       BASH_LINENO
              ソースファイル中の行番号からなる配列変数で、 それぞれの要素は FUNCNAME の各要素が呼
              び出された位置に対応します。      つまり、${BASH_LINENO[$i]}       はソースファイル
              (${BASH_SOURCE[$i+1]})  中で${FUNCNAME[$i]} が呼び出された行番号です。 別のシェル関
              数から参照されると ${BASH_LINENO[$i-1]} になります。 現在の行番号は LINENO で取得で
              きます。
       BASH_REMATCH
              条件コマンド  [[ 中の二項演算子 =~ により設定される配列変数です。 インデックス 0 の
              要素は、正規表現全体にマッチする部分文字列です。 インデックス n の要素は、n  番目の
              括弧による部分式に マッチした部分文字列です。 この変数は読み込み専用です。
       BASH_SOURCE
              ソースファイル名からなる配列変数で、それぞれの要素は配列変数  FUNCNAME の要素のシェ
              ル関数がそれぞれ定義されたファイル名に対応します。  シェル関数  ${FUNCNAME[$i]}  は
              ファイル ${BASH_SOURCE[$i]} で定義され、 ${BASH_SOURCE[$i+1]} から呼ばれています。
       BASH_SUBSHELL
              サブシェルやサブシェル環境が作成されるたびに 1 ずつ増えます。 初期値は 0 です。
       BASH_VERSINFO
              読み込み専用の配列変数で、配列の各要素は現在実行されている  bash のバージョン情報を
              持っています。 配列変数の要素に代入される内容を以下に示します:
              BASH_VERSINFO[0]        メジャーバージョン番号 (リリース)。
              BASH_VERSINFO[1]        マイナーバージョン番号 (バージョン)。
              BASH_VERSINFO[2]        パッチレベル。
              BASH_VERSINFO[3]        ビルドバージョン。
              BASH_VERSINFO[4]        リリースステータス (beta1 など)。
              BASH_VERSINFO[5]        MACHTYPE の値。
       BASH_VERSION
              現在実行している bash のバージョンを示す文字列に展開されます。
       COMP_CWORD
              現在カーソル位置がある単語の 配列変数 ${COMP_WORDS} におけるインデックスです。 この
              変数はプログラム補完機能 (後述の プログラム補完 を参照)  から呼ばれたシェル関数にお
              いてのみ有効です。
       COMP_KEY
              現在の補完関数を呼び出したキー (またはキーシーケンスの最後のキー) です。
       COMP_LINE
              現在のコマンドラインです。 この変数はプログラム補完機能 (後述の プログラム補完 を参
              照) から呼ばれたシェル関数や外部コマンドにおいてのみ有効です。
       COMP_POINT
              現在のコマンドの先頭からの相対値として与えられた   カーソル位置のインデックスです。
              現在のカーソル位置が現在の現在のコマンドの最後にある場合、           この変数の値は
              ${#COMP_LINE}  と等しくなります。 この変数はプログラム補完機能 (後述の プログラム補
               を参照) から呼ばれたシェル関数や外部コマンドにおいてのみ有効です。
       COMP_TYPE
              補完関数を呼び出した補完のタイプに対応する整数値が設定されます。 TAB は通常の補完で
              す。 ?  は連続したタブ入力による候補のリスト表示です。 ! は途中まで補完した後の候補
              のリスト表示です。 @ は、部分的な補完ができないときの候補のリスト表示です。 %  はメ
              ニュー補完  (menu completion)です。 この変数はプログラム補完機能 (後述の プログラム
              補完 を参照)  から呼ばれたシェル関数と外部コマンドにおいてのみ有効です。
       COMP_WORDBREAKS
              単語補完のときに readline  ライブラリが単語分割の区切り文字として  扱う文字の並びで
              す。  COMP_WORDBREAKS を unset すると、この変数の特殊な性質はなくなります。後で再び
              set しても元には戻りません。
       COMP_WORDS
              現在のコマンドラインの各単語からなる配列変数 (後述の 配列 参照) です。 コマンドライ
              ンは  readline と同じように前述した COMP_WORDBREAKS によって単語に分割されます。 こ
              の変数はプログラム補完機能 (後述の プログラム補完 を参照)  から呼ばれたシェル関数に
              おいてのみ有効です。
       COPROC 無名のコプロセス (前述の コプロセス を参照)  が入出力するファイル・ディスクリプター
              を保持する配列変数 (後述の 配列 参照) です。
       DIRSTACK
              現在のディレクトリスタックの内容を持つ配列変数 (後述の 配列 を参照)  です。組み込み
              コマンド dirs を使うと、スタック中のディレクトリがスタック順に表示されます。 配列変
              数の要素に代入を行うと、     既にスタックに入っているディレクトリを変更できますが、
              ディレクトリの追加と削除を行うためには、組み込みコマンドの pushdpopd を使わなけ
              ればなりません。     この変数に代入を行っても現在の作業ディレクトリは変わりません。
              DIRSTACKunset すると、この変数の特殊な性質はなくなります。後で再び set しても元
              には戻りません。
       EUID   現在のユーザの実効ユーザ ID  に展開されます。  初期化はシェルの起動時に行われます。
              この変数は読み込み専用です。
       FUNCNAME
              現在の呼び出しスタックにある全てのシェル関数名が  入った配列変数です。 インデックス
              0 の要素は、実行中のシェル関数の名前です。 最も下の要素  (最大のインデックスの要素)
              は  "main".  です。 この変数は、シェル関数を実行している間のみ存在します。 FUNCNAME
              への代入は効果がなく、エラーステータスを返します。 FUNCNAMEunset すると、この変
              数の特殊な性質はなくなります。後で再び set しても元には戻りません。

              この変数の各要素は、BASH_LINENOBASH_SOURCE の各要素に 対応します。 これらを参照
              することで、呼び出しスタックの状態を確認できます。 例えば、${FUNCNAME[$i]} はファイ
              ル ${BASH_SOURCE[$i+1]} の行番号 ${BASH_LINENO[$i]} から呼び出されたものです。 組み
              込みコマンド caller を実行すると、これらの情報から 現在の呼び出しスタックを表示しま
              す。
       GROUPS 現在のユーザがメンバになっているグループのリストを含んだ配列変数です。  GROUPS への
              代入は効果がなく、エラーステータスを返します。 GROUPS が unset された場合はこの変数
              の特殊な性質はなくなります。 その後に再設定されたとしても元に戻りません。
       HISTCMD
              現在のコマンドの履歴番号  (履歴リストにおけるインデックス)  です。 HISTCMDunset
              すると、この変数の特殊な性質はなくなります。後で再び set しても元には戻りません。
       HOSTNAME
              現在のホスト名が自動的に設定されます。
       HOSTTYPE
              bash  を実行するマシンの種類をユニークに記述する文字列が自動的に設定されます。   デ
              フォルト値はシステム依存です。
       LINENO この変数が参照されると、その場所ごとに、 スクリプトや関数における現在の行番号 (1 か
              ら始まります)  を表す  10  進値に置き換わります。スクリプトや関数の内部でない場合に
              は、  意味のある値が代入されることは保証されません。 LINENOunset すると、この変
              数の特殊な性質はなくなります。後で再び set しても元には戻りません。
       MACHTYPE
              bash      を実行するシステムの種類を完全に指定する文字列が、       GNU       標準の
              cpu-company-system の形式で設定されます。 デフォルト値はシステム依存です。
       MAPFILE
              組み込みコマンド  mapfile に変数名が指定されなかったときに 読み込んだテキストを保持
              する配列変数 (後述の 配列 を参照) です。
       OLDPWD cd コマンドで設定された、1 つ前の作業ディレクトリ。
       OPTARG 組み込みコマンド getopts で処理した最後のオプション引き数の値です (後述の  シェルの
              組み込みコマンド を参照)。
       OPTIND 組み込みコマンド getopts で次に処理されるオプション引き数のインデックスです (後述の
              シェルの組み込みコマンド を参照)。
       OSTYPE bash を実行するオペレーティングシステムを記述する文字列が自動的に設定されます。  デ
              フォルト値はシステム依存です。
       PIPESTATUS
              フォアグラウンドで最後に実行したパイプラインの各プロセスの 終了ステータスのリストを
              含む配列変数です (後述の 配列 を参照)。 パイプラインには 1 つのコマンドしかなくても
              かまいません。
       PPID   そのシェルの親のプロセス ID。この変数は読み込み専用です。
       PWD    cd コマンドで設定された現在の作業ディレクトリ。
       RANDOM このパラメータが参照されるたびに、  0  から  32767 までのランダムな整数が生成されま
              す。 RANDOM に値を代入すると、乱数の列を初期化できます。 RANDOMunset すると、こ
              の変数の特殊な性質はなくなります。後で再び set しても元には戻りません。
       READLINE_LINE
              readline の編集バッファの内容です。 "bind -x" (後述の シェルの組み込みコマンド を参
              照) で使います。
       READLINE_POINT
              readline の編集バッファでの挿入ポイントの位置です。 "bind -x" (後述の  シェルの組み
              込みコマンド を参照) で使います。
       REPLY  組み込みコマンド   read  に引き数が与えられなかったときに読み込まれた行が設定されま
              す。
       SECONDS
              このパラメータを参照すると、シェルが起動されてからの秒数が返されます。 SECONDS に値
              を代入した場合、それ以降の参照において返される値は、 代入された値と代入以降の秒数を
              足した値になります。  SECONDSunset   すると、この変数の特殊な性質はなくなりま
              す。後で再び set しても元には戻りません。
       SHELLOPTS
              コロン区切りのリストで、有効になっているシェルのオプションを示します。 リスト中のそ
              れぞれの単語は、組み込みコマンド set-o オプション (後述の  シェルの組み込みコマ
              ンド  を参照) に対する有効な引き数になっています。 SHELLOPTS に入っているオプション
              は、set -o を実行した場合にも on であると報告されます。 この変数が bash  の起動時に
              環境変数に入っていた場合、   どの初期化ファイルを読むよりも前にリスト中のシェルオプ
              ションが有効になります。 この変数は読み込み専用です。
       SHLVL  bash が起動するときに、環境変数で渡された値から 1 増やした値が 設定されます。
       UID    現在のユーザのユーザ ID に展開されます。 初期化はシェルの起動時に行われます。  この
              変数は読み込み専用です。

       以下の変数はシェルが使用します。場合によっては、  bash  がデフォルト値を変数に代入します。
       そのような場合についてはそれぞれ注記します。

       BASH_ENV
              bash    がシェルスクリプトを実行するときにこの値が設定されている場合、     この値は
              (~/.bashrc のように) シェルを初期化するコマンドが書かれているファイル名と解釈されま
              す。 BASH_ENV  の値をファイル名として処理する前には、パラメータ展開、コマンド置換、
              算術的展開が行われます。 この結果のファイルを検索する際には PATH は使用されません。
       BASH_XTRACEFD
              有効なファイル・ディスクリプターに対応する整数をセットすると、  bashset -x が設
              定されたときに、生成されたトレース出力を   そのファイル・ディスクリプターに出力しま
              す。 BASH_XTRACEFD が unset されるか、新しい値が代入されると、 それまで設定されてい
              たファイル・ディスクリプターはクローズされます。 BASH_XTRACEFD を unset  するか空文
              字列を代入すると、  トレース出力は標準エラー出力に送られます。  BASH_XTRACEFD  に 2
              (標準エラー出力のファイル・ディスクリプター) を設定してしまうと、 unset  したときに
              標準エラー出力がクローズされてしまうことに 注意してください。
       CDPATH cd コマンドの検索パスです。これは、 cd コマンドで指定した対象ディレクトリを探すディ
              レクトリを コロンで区切って並べたリストです。 例えば、 ".:~:/usr"  といった値になり
              ます。
       COLUMNS
              組み込みコマンド  select によって、選択されたリストを表示する際の端末幅の決定に用い
              られます。 SIGWINCH を受信すると自動的に設定されます。
       COMPREPLY
              bash が可能な補完候補を読み込む配列変数です。 この値はプログラム補完機能 (後述の 
              ログラム補完 を参照) によって呼び出されたシェル関数によって生成されます。
       EMACS  bash が起動したときにこの環境変数が設定されて値が "t", になっていると、Emacs のシェ
              ルバッファで動作しているとみなし、 行編集を無効にします。
       ENV    BASH_ENV と類似の変数で、POSIX モードで使われます。
       FCEDIT 組み込みコマンド fc が使うデフォルトのエディタです。
       FIGNORE
              ファイル名補完 (後述の READLINE を参照) を行う際に無視するサフィックスを コロンで区
              切って並べたリストです。 FIGNORE のエントリのいずれかにサフィックスがマッチするファ
              イル名は、 ファイル名補完にマッチするファイルのリストから除外されます。  例えば値と
              して ".o:~" を設定します。
       FUNCNEST
              0 より大きい数値を設定すると、関数呼び出しを何重まで許すかの 最大レベルを決めます。
              このレベルを超えて関数を呼び出すと、コマンドが異常終了します。
       GLOBIGNORE
              パス名展開で無視するファイル名の集合を定義するパターンを コロンで区切って並べたリス
              トです。 パス名展開パターンにマッチするファイル名が GLOBIGNORE 内のパターンのどれか
              にもマッチする場合、 マッチしたもののリストから削除されます。
       HISTCONTROL
              履歴リストに入れるコマンドを制御する値をコロンで区切って並べたリストです。
              ignorespace  の値が設定されていると、 空白 文字で始まる行は履歴リストに入りません。
              ignoredups の値が設定されていると、  履歴の最後の行にマッチする行は履歴リストに入り
              ません。  ignoreboth  を指定すると ignorespaceignoredups の両方が指定されます。
              erasedups の値が設定されていると、行が保存される前に、 現在の行に一致する過去の行が
              履歴リストから削除されます。  上記以外の値を設定しても無視されます。 HISTCONTROL が
              設定されていない場合や、不正な値が設定されている場合には、 シェルのパーザが読み込ん
              だ全ての行は HISTIGNORE の値が示す条件の下で履歴リストに保存されます。 複数行にまた
              がる複合コマンドの場合は 2 番目以降の行が調べられることはありません。よって、これら
              は HISTCONTROL の値に関わらず履歴に追加されます。
       HISTFILE
              コマンド履歴が保存されるファイルの名前    (後述の    履歴   を参照)。デフォルト値は
              ~/.bash_history です。 設定されていない場合、  対話シェルが終了するときに履歴の保存
              が行われません。
       HISTFILESIZE
              履歴ファイルに保持する履歴の最大数です。この変数に値が代入された場合、 その行数を越
              えないように、必要に応じて古いエントリを削除して履歴ファイルを  切り詰めます。   デ
              フォルト値は  500 です。対話シェルが終了するときにも、 履歴ファイルのサイズはファイ
              ル書き込みの後にこのサイズに切り詰められます。
       HISTIGNORE
              どのコマンド行を履歴リストに保存するかを決めるために使うパターンを コロンで区切って
              並べたリストです。  それぞれのパターンは行の先頭から比較され、 行全体と完全に一致し
              なければなりません (`*' が暗黙的に追加されるこ  とはありません)。行に対する各パター
              ンの評価は  HISTCONTROL で指定したチェックが行われた後で実行されます。 通常のシェル
              のパターンマッチング文字以外に、  `&'  が履歴の前の行にマッチします。  バックスラッ
              シュを使って  `&' をエスケープできます。 マッチングを試みる前にバックスラッシュは取
              り除かれます。 複数行にまたがる複合コマンドの場合、2 番目以降の行は調べられません。
              よって、これらは HISTIGNORE の値に関わらず履歴に追加されます。
       HISTSIZE
              コマンド履歴に記憶するコマンドの数  (後述の  HISTORY  を参照)。 デフォルトは 500 で
              す。
       HISTTIMEFORMAT
              この変数に空でない値が設定されると、 組み込みコマンド history  で履歴エントリを表示
              するときに  タイムスタンプを表示するための  strftime(3) の書式文字列 として使われま
              す。 この変数が設定されると、ほかのシェルのセッションでも使えるように  タイムスタン
              プは履歴ファイルに書き込まれます。 タイムスタンプはほかの履歴行と区別するために履歴
              のコメントとなります。
       HOME   現在のユーザのホームディレクトリです。 組み込みコマンド cd のデフォルトの引き数にな
              ります。 この変数の値は、チルダ展開を実行するときにも使われます。
       HOSTFILE
              /etc/hosts  と同じフォーマットであり、 シェルがホスト名を補完する必要があるときに読
              み込むファイルの名前を示します。 シェルの実行中でも補完するホスト名のリストを変更で
              きます。  この変数が変更された次の機会にホスト名の補完を試みるとき、  bash は新しい
              ファイルの内容を既存のデータベースに追加します。 HOSTFILE  が設定されているがその値
              が空文字列の場合や、 読み込めるファイルの名前ではない場合には、 bash は補完可能なホ
              スト名のリストを取得するために /etc/hosts を使用します。 HOSTFILE が unset された場
              合は、ホスト名のリストはクリアされます。
       IFS    内部フィールド区切り文字  (Internal Field Separator) です。展開を行った後に単語を分
              割する場合や、組み込みコマンドの read  を使ったときに行を単語に分割する場合に使われ
              ます。 デフォルト値は “<空白><タブ><改行>” です。
       IGNOREEOF
              単独で入力された  EOF 文字を受け取ったときの対話シェルの動作を制御します。 この変数
              が設定されていれば、指定されている値の数だけの EOF 文字を連続して行頭の文字として入
              力しなければ bash は終了しません。この変数に数値以外の値が設定されている場合や、 空
              の値が設定されている場合には、デフォルト値として 10 が使われます。 この変数が存在し
              なければ、 EOF 文字はシェルへの入力の終わりを示します。
       INPUTRC
              readline  の起動ファイルのファイル名です。これはデフォルト値の  ~/.inputrc  (後述の
              READLINE を参照) を上書きします。
       LANG   ロケールカテゴリが LC_ で始まる変数によって明示的に指定されて  いない場合、そうした
              カテゴリのロケールを決定するのに使用されます。
       LC_ALL この変数はロケールカテゴリを指定する LC_ 変数と LANG の値に優先します。
       LC_COLLATE
              この変数はパス名展開の結果をソートするときに使用される照合順序と、   パス名展開とパ
              ターンマッチングにおける 範囲表現、等値クラス、照合順序の動作を決定します。
       LC_CTYPE
              この変数は、パス名展開とパターンマッチングにおける 文字の解釈と文字クラスに含まれる
              文字を決めます。
       LC_MESSAGES
              この変数は、$ の後に続くダブルクォートされた文字列の 翻訳に使うロケールを決めます。
       LC_NUMERIC
              この変数は数字のフォーマットに使用するロケールカテゴリを決定します。
       LINES  組み込みコマンド  select によって、選択されたリストを表示する際の行数の決定に用いら
              れます。 SIGWINCH を受信すると自動的に設定されます。
       MAIL   このパラメータにファイル名またはディレクトリ名が設定されており、かつ変数   MAILPATH
              が設定されていなければ、  bash は指定されたファイルまたはMaildier形式のディレクトリ
              への メールの到着をユーザに通知します。
       MAILCHECK
              bash がメールをチェックする頻度を (秒数で) 指定します。 デフォルト値は 60  秒です。
              メールをチェックする時間になると、     シェルはプライマリのプロンプトを表示する前に
              チェックを行います。 この変数が unset された場合、 あるいはこの変数に 0  以上の数値
              以外が代入された場合は、 シェルはメールのチェックを行いません。
       MAILPATH
              メールのチェックに使うファイル名をコロンで区切って並べたリストです。 特定のファイル
              にメールが到着したときに出力される メッセージは、`?'   を使ってファイル名をメッセー
              ジから区切ることによって  指定できます。メッセージのテキスト中で使われたときは、 $_
              は現在のメールファイルの名前に展開されます。 設定例:
              MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
              この変数のデフォルト値は bash が与えますが、 bash  が使うユーザのメールファイルの位
              置はシステム依存です (/var/mail/$USER 等)。
       OPTERR 値として  1 が設定されている場合、 bash は組み込みコマンド getopts (後述の シェルの
              組み込みコマンド を参照) を使って生成したエラーメッセージを表示します。  シェルが起
              動されたり、シェルスクリプトが実行されたりするたびに、  OPTERR  は 1 に初期化されま
              す。
       PATH   コマンドの検索パスです。 シェルがコマンドを検索するディレクトリをコロンで区切って並
              べたリストです  (後述の コマンドの実行 を参照)。 PATH 中の長さ 0 の (空の) ディレク
              トリ名は、カレントディレクトリを示します。 空のディレクトリ名は、2 つのコロンを並べ
              るか、  先頭や末尾のコロンで表します。 デフォルトのパスはシステム依存で、 bash をイ
              ンストールしたシステム管理者が設定します。                             一般的な値は
              ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin'' です。
       POSIXLY_CORRECT
              bash が起動したときにこの環境変数が設定されていると、 起動オプション --posix を指定
              したときと同じように、どの初期化ファイルを読むよりも前に シェルが posix モード にな
              ります。 シェルの実行中にこの変数が設定されると、 bashset -o posix コマンドを実
              行したときと同じように、posix モード が有効になります。
       PROMPT_COMMAND
              設定されていると、プライマリプロンプトを出す前に毎回、 この値がコマンドとして実行さ
              れます。
       PROMPT_DIRTRIM
              0  より大きい値が設定されると、 プロンプト文字列のエスケープシーケンス \w\W (後
              述の プロンプト を参照)  を展開するときに、ディレクトリがパス名の最後からこの数だけ
              残ります。 削られた部分は省略記号に置き換えられます。
       PS1    このパラメータの値は展開されてプライマリのプロンプト文字列として使われます。  (後述
              の プロンプト を参照)、 デフォルト値は “\s-\v\$ ” です。
       PS2    このパラメータの値は PS1 と同じように展開され、セカンダリのプロンプト文字列として使
              われます。 デフォルト値は “> ” です。
       PS3    このパラメータの値は  select コマンド (前述の シェルの文法 を参照) のプロンプトとし
              て使われます。
       PS4    このパラメータは PS1 と同じように展開されます。この値は実行トレース中に bash が表示
              する各コマンド前に出力されます。  複数段の間接レベル (levels of indirection) を示す
              ときは、 PS4 の最初の文字が必要に応じて複数回表示されます。 デフォルト値は “+ ”  で
              す。
       SHELL  この環境変数にシェルのフルパス名が保存されています。 シェルを起動したときに設定され
              ていない場合は、 bash が現在のユーザのログインシェルのフルパス名を代入します。
       TIMEFORMAT
              このパラメータの値は、予約語である time が先頭に付いているパイプラインに対して、 時
              間情報の表示の仕方を指定するフォーマット文字列として使われます。 % は、時間の値など
              に展開される エスケープシーケンスを示すための文字です。  エスケープシーケンスとその
              意味を以下に示します。 ただし、ブレース ([]) は省略可能であることを表しま す。
              %%        % 文字そのもの。
              %[p][l]R  経過した秒数。
              %[p][l]U  ユーザモードで使われた CPU の秒数。
              %[p][l]S  システムモードで使われた CPU の秒数。
              %P        CPU のパーセンテージ。(%U + %S) / %R で算出されます。

              p  省略可能で、精度 (precision) が何桁であるかを指定します。 つまり小数点以下の桁数
              を指定します。この値が 0 ならば、 小数点や小数の部分は出力されません。 また、小数点
              以下で指定できるのは  3 桁までです。 つまり、p の値が 3 より大きければ 3 に変更され
              ます。 p を指定しなければ、この値は 3 となります。

              l は省略可能ですが、指定すると、分を含み、 MMmSS.FF  という形式の長いフォーマットに
              なります。 小数を含むかどうかは p の値によって決まります。

              この変数が設定されていなければ、  bash$'\nreal\t%3lR\nuser\t%3lU\nsys%3lS' とい
              う値が指定されているかのように動作します。 この値が空文字列ならば、時間の情報は表示
              されません。 フォーマット文字列の表示の際には、末尾に改行文字が追加されます。
       TMOUT  0 より大きい値を設定すると、 TMOUT の値が組み込みコマンド read のデフォルトのタイム
              アウト値となります。 select コマンドは、端末からの入力の際に TMOUT 秒入力がないと終
              了します。  対話シェルではこの値は、プライマリのプロンプトを出してから 入力を待つ秒
              数として解釈されます この秒数待って入力が来ないと、 bash は終了します
       TMPDIR 設定すると、値を bash がシェル用にテンポラリファイルを作る ディレクトリ名として使い
              ます。
       auto_resume
              この変数は、ユーザがジョブ制御をするときの方法を変更します。   この変数を設定した場
              合、1 語からなるリダイレクトなしの単純なコマンドを 入力すると、停止中のジョブの実行
              再開候補として扱われます。 曖昧な指定は許されず、入力された文字列で始まるジョブが複
              数ある場合には、 最後にアクセスされたものが選ばれます。  停止中のジョブの  名前  と
              は、コマンドを起動する際に使ったコマンドラインのことです。  この変数の値に exact が
              設定されている場合、 与えられた文字列は停止中のジョブの名前に  正確にマッチしなけれ
              ばなりません。  substring が設定されている場合は、 与えられた文字列は停止中のジョブ
              の名前の部分文字列に マッチする必要があります。 substring  という値は、ジョブ識別子
              の  %? に似た機能を持っています (後述の ジョブ制御 を参照)。 これ以外の値が設定され
              ている場合、  与えられた文字列は停止中のジョブの名前の   先頭部分でなければなりませ
              ん。これはジョブ識別子の %string と似た機能を持っています。
       histchars
              2  文字または 3 文字で、 履歴の展開とトークン分割 (後述の 履歴の展開 を参照) を制御
              します。 最初の文字は 履歴展開 (history expansion) 文字であり、  履歴展開の先頭を示
              す文字です。通常、これは `!' です。 2 番目の文字は 簡易置換 (quick substitution) 
              字であり、直前に入力したコマンドの文字列を 別の文字列に置き換えて再実行するための省
              略表現として使います。 デフォルト値は `^' です。 3 番目の文字は省略可能です。単語の
              先頭でこの文字が見つかると、 行の残りの部分がコメントとなるような文字を指定します。
              これは通常は `#' です。 履歴コメント文字があると、 その行の残りの単語に対する履歴置
              換はスキップされます。 この文字があるからといって、  必ずしもシェルのパーザが行の残
              りの部分をコメントとして扱うわけではありません。

   配列
       bash  は 1 次元のインデックスによる配列と連想配列の変数を扱うことができます。 全ての変数は
       配列として使用できます。 declare 組み込みコマンドを使えば、明示的に配列を宣言できます。 配
       列のサイズの上限はありませんし、 メンバのインデックス付けや代入を 連続的にしなければならな
       いという条件もありません。 インデックスによる配列は整数 (算術式を含む) で参照します。 イン
       デックスは 0 から始まります。 連想配列は任意の文字列で参照します。

       変数の代入の際に  name[subscript]=value という記法が使われた場合、配列は自動的に生成されま
       す。 subscript は算術式として扱われますが、この式は評価すると 数値になるものでなければなり
       ません。 subscript を評価すると 0 未満の数になる場合、最大のインデックス +1 からのオフセッ
       トとして扱われます。つまり、subscript が -1 のときは、配列の最後の要素を参照します。  イン
       デックスによる配列を明示的に宣言するには、 declare -a name を使います (後述の シェルの組み
       込みコマンド を参照)。 declare -a name[subscript] も許されます。このとき subscript  は無視
       されます。

       連想配列は declare -A name で作ります。

       組み込みコマンドの declarereadonly を使うと、配列変数に対して属性を設定できます。 どの
       属性も配列のメンバ全てに対して適用されます。

       配列の代入は name=(value1 ... valuen) という形式の複合代入 (compound assignment)  を用いて
       行います。  ここでそれぞれの value の形式は [subscript]=string です。 インデックスによる配
       列では、ブラケット ([]) と subscript は省略できます。  ブラケットと  subscript  を省略しな
       かった場合、 そのインデックスに対して代入が行われます。 省略した場合には、代入される要素の
       インデックスは、 その文の中で直前に代入されたインデックスに 1 を加えたものになります。  イ
       ンデックスは 0 から始まります。

       連想配列への代入では、subscript は省略できません。

       この記法は組み込みコマンド  declare でも使えます。個別の配列要素に対する代入は、先に説明し
       た name[subscript]=value の記法を使って行います。

       配列の任意の要素は、${name[subscript]} を使って参照できます。 パス名展開との衝突を避けるた
       めにブレースが必要です。  subscript@* ならば、配列の参照は name の全ての要素に展開
       されます。この 2 つの添字が異なるのは、 単語がダブルクォートの内部にある場合だけです。  単
       語がダブルクォートされていれば、${name[*]}  は 1 つの単語に展開されます。 この単語は、配列
       の各メンバの値を特殊変数  IFS  の最初の値で区切って並べたものです。一方、${name[@]}   は、
       name  の各要素を別々の単語に展開します。 配列のメンバが全くないときは、${name[@]} は空の単
       語に展開されます。   単語の中でダブルクォートの展開が行われるときには、   元の単語のダブル
       クォートより前の部分の後に 最初のパラメータの展開結果がつながり、 最後のパラメータの展開結
       果の後に 元の単語のダブルクォートより後の部分がつながります。 これは特殊パラメータ *@
       の展開に似ています     (前述の    特殊パラメータ    を参照)。    ${#name[subscript]}    は
       ${name[subscript]} の長さに展開されます。 subscript* または @ の場合は、  配列中の要素
       数に展開されます。添字なしで配列変数を参照すると、 0 番目の要素を参照したことになります。

       配列変数は  subscript に対して値が代入されていれば 設定されているとみなされます。 空文字列
       は有効な値です。

       組み込みコマンドの unset  は配列の削除に使われます。unset  name[subscript]  とすると、イン
       デックスが subscript である配列の要素が削除されます。 パス名展開による意図しない副作用に注
       意してください。 unset name (name は配列) または unset name[subscript] (subscript*  ま
       たは @) とすると、 配列全体が削除されます。

       組み込みコマンドの declare, local, readonly いずれにおいても、 -a オプションでインデックス
       による配列を指定できます。 -A また、オプションで連想配列を指定できます。  両方が指定された
       ときには、  -A が優先します。 組み込みコマンド read では、 -a オプションを使えば標準入力か
       ら読み込んだ単語のリストを 配列に代入できます。 組み込みコマンド setdeclare では、別の
       変数への代入に再利用できるような形で配列の値を表示します。

展開

       展開はコマンドラインが単語へ分割された後に (コマンドライン上で) 行われます。行われる展開は
       7 種類あります: ブレース展開 (brace expansion), チルダ展開 (tilde expansion), パラメータと
       変数の展開 (parameter and variable expansion), コマンド置換 (command substitution), 算術式
       展開  (arithmetic  expansion),   単語の分割   (word   splitting),   パス名展開   (pathname
       expansion)。

       展開の順序は次のようになります:    ブレース展開、チルダ展開、パラメータ・   変数・算術式展
       開、コマンド置換 (左から右へ)、単語分割、パス名展開。

       これらに加えて プロセス置換 (process substitution) をサポートできるシステムもあります。

       展開した部分の単語の数が変化することがあるのは、ブレース展開、  単語の分割、パス名展開だけ
       です。ほかの展開では、  1 つの単語は 1 つの単語に展開されます。 この規則の唯一の例外は先に
       説明した "$@" と "${name[@]}" の展開 ( パラメータ を参照) だけです。

   ブレース展開
       ブレース展開 (brace expansion) を使うと、任意の文字列を生成できます。この仕組みは パス名展
       に似ていますが、  生成されたファイル名が実在する必要はありません。  ブレース展開されるパ
       ターンは、 前置部分 (preamble: 省略可能)、  対になるブレースで囲んだコンマ区切りの文字列ま
       たはシーケンス式、 後置部分 (postscript: 省略可能) を順に並べたものです。 前置部分はブレー
       ス内にある文字列それぞれの先頭部分に追加され、  後置部分は左から右に順に展開されて得られた
       それぞれの文字列の末尾に追加されます。

       ブレース展開は入れ子にできます。 展開して得られた文字列はソートされず、 左から右への順番が
       そのまま残ります。 例えば a{d,c,b}e は `ade ace abe' と展開されます。

       シーケンス式は {x..y[..incr]} の形になります。xy は整数または 1 つの文字で、  省略可能
       な  incr は増減分の整数です。 整数が与えられると、 xy の間の両端を含む数を全て列挙した
       形に展開されます。 与る整数の前に 0 を付けると、全ての項が同じ幅に揃えられます。 つまり、xy のどちらかが 0 で始まる場合、生成される全ての項が 同じ文字数になるように、必要であれ
       ば前に 0 が付けられます。 文字が与えられると 辞書順で xy  の間の両端を含む文字を全て列
       挙した形に展開されます。 xy は同じ型である必要があります。 incr が与えられると、その値
       が各項の間の差となります。 incr のデフォルトは、1 または -1 のうち適切な方です。

       ブレース展開はほかのどの展開よりも前に実行されます。  また、ほかの展開において特殊な意味を
       持つ文字もそのまま結果に残ります。  つまり、厳密にテキスト操作だけを行います。 bash は、展
       開の文脈やブレースの間のテキストに対して 文法的な解釈を適用することは一切ありません。

       正しい形のブレース展開には、クォートされていない開きブレースと  閉じブレース、そしてシーケ
       ンス式か少なくとも 1 つのクォートされていないコンマが 含まれていなければなりません。正しい
       形でないブレース展開は全て、 変更されないでそのまま残ります。 {,  をバックスラッシュで
       クォートすれば、 ブレース展開の一部と解釈されないようにできます。 パラメータ展開との衝突を
       避けるため、文字列 ${ はブレース展開の対象とは解釈されません。

       この仕組みは、 生成される文字列の共通先頭部分が上記の例より長い場合に、 短縮表現としてよく
       使用されます:

              mkdir /usr/local/src/bash/{old,new,dist,bugs}
       または
              chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

       ブレース展開の導入によって、伝統的な sh とは少し非互換になった部分があります。 sh は単語の
       一部として開きブレースや閉じブレースが現われても特別扱いはせず、  そのまま出力に残します。
       bash はブレース展開の結果として単語からブレースを取り除きます。例えば shfile{1,2} のよ
       うに入力された単語はそのままの形で出力されますが、 bash ではこの同じ単語は展開されて file1
       file2  のように出力されます。 厳密に sh と互換にしたければ、 bash+B オプションを付けて
       起動するか、 set コマンドに +B オプションを与えてブレース展開を無効にしてください  (後述す
       る シェル組み込みコマンド を参照)。

   チルダ展開
       クォートされていないチルダ (`~') で単語が始まった場合、 クォートされていないスラッシュより
       も前にある文字全て   (クォートされていないスラッシュが無ければ全ての文字)     はチルダプレ
       フィックス  (tilde-prefix) と解釈されます。 クォートされている文字がチルダプレフィックス中
       に無ければ、 チルダプレフィックス中のチルダ以降の文字は、 ログイン名 (login name) になるか
       もしれない文字列として扱われます。  このログイン名が空文字列ならば、チルダはシェルパラメー
       タ HOME の値に置き換えられます。 HOME が設定されていない場合は、代わりにシェルを実行してい
       るユーザの  ホームディレクトリに置き換えられます。  ログイン名が空でなければ、  チルダプレ
       フィックスは指定されたログイン名に対応する ホームディレクトリに置き換えられます。

       チルダプレフィックスが `~+' ならば、チルダプレフィックスはシェル変数 PWD  の値に置き換えら
       れます。  チルダプレフィックスが `~-' ならば、シェル変数 OLDPWD の値に置き換えられます (値
       が設定されていれば)。 チルダプレフィックス中のチルダより後の文字が数値 N であれば  (数値の
       前に `+' や `-' を置くこともできます)、 チルダプレフィックスはディレクトリスタック内の対応
       する要素に置換されます。  置換される要素は、チルダプレフィックスを引き数として組み込みコマ
       ンド  dirs を実行したときに表示されるものです。 チルダプレフィックスにおけるチルダ以降の文
       字が、 先行する `+' や `-' のない数値である場合は、`+' であるとみなされます。

       ログイン名が有効でない場合や、チルダ展開が失敗した場合には、 単語は置き換えられません。

       全ての変数代入において、 :=  の直後にクォートされていないチルダプレフィックスがないか
       チェックが行われます。   もし見つかった場合にはこれらもチルダ展開されます。   したがって、
       PATH, MAILPATH, CDPATH への代入にチルダを含むファイル名を使えば、 シェルは展開された値を代
       入します。

   パラメータの展開
       `$'   文字があると、パラメータ展開、コマンド置換、  算術式展開が行われます。展開されるパラ
       メータ名やシンボルは、 ブレースで括ることもできます。 ブレースは省略可能ですが、  変数の直
       後に変数名の一部と解釈できる文字が置かれた場合に、  その文字と共に変数が展開されてしまうの
       を防ぐために用意されています。

       ブレースを使った場合、対になるのは最初に表れる `}' です。 ただしバックスラッシュでエスケー
       プされているものや  クォートされている文字列中のものは含まれませんし、ブレースの内側にある
       算術式展開やコマンド置換、パラメータ展開に入っているものも含まれません。

       ${parameter}
              parameter の値に置換されます。ブレースが必要になるのは、 parameter が 2  桁以上の数
              字を持つ位置パラメータの場合や、 parameter の直後の文字を名前の一部として解釈させた
              くない場合です。

       parameter の最初の文字が感嘆符ならば、変数間接展開が行われます。 bash  は残りの  parameter
       からなる変数の値を変数の名前と見なします。      そしてそこで得られた名前の変数を展開した値
       を、置換処理の続きで使います。 これが 間接展開 です。 ただし ${!prefix*} や ${!name[@]} の
       展開は例外です。 これは以下で説明します。 間接展開を表すには、感嘆符は左ブレースの直後に続
       ける必要があります。

       以下に示すそれぞれの場合、word に対してチルダ展開、 パラメータ展開、コマンド置換、算術式展
       開が行われます。

       部分文字列展開以外の場合、以下の形式で、 bash はパラメータが設定されているか、空ではないか
       を調べます。 コロンを省略した場合には設定されているかどうかのみを調べます。

       ${parameter:-word}
              デフォルトの値を使いますparameter が設定されていないか空文字列であれば、 word を
              展開したものに置換されます。そうでなければ、 parameter の値に置換されます。
       ${parameter:=word}
              デフォルトの値を代入しますparameter が設定されていないか空文字列であれば、 word
              を展開したものが parameter に代入されます。それから parameter  の値への置換が行われ
              ます。 位置パラメータや特殊パラメータへの代入をこのように行うことはできません。
       ${parameter:?word}
              空文字列または設定されていない場合にエラーを表示しますparameter が空文字列または
              設定されていない場合、word を展開したもの (word がなければ パラメータが空文字列また
              は設定されていないことを示すメッセージ)  が標準エラー出力に出力されます。シェルが対
              話的でなければ、   シェルは終了します。パラメータに空文字列以外が設定されていれば、
              parameter の値への置換が行われます。
       ${parameter:+word}
              別の値を使用しますparameter が空文字列または設定されていなければ、空文字列に置換
              されます。 そうでなければ word を展開したものに置換されます。
       ${parameter:offset}
       ${parameter:offset:length}
              部分文字列展開parameter を展開したものから最大 length 文字を取り出します。  先頭
              の文字は offset で指定します。length を省略すると、 offset で指定した文字を先頭にし
              て、 parameter の残り全部が含まれる部分文字列に展開します。 lengthoffset は算術
              式です  (後述の 算術式評価 を参照)。 offset を評価すると 0 未満の数になる場合、この
              値は parameter の値の末尾からのオフセットとして使われます。 length  を評価すると  0
              未満の数になる場合、 parameter@ ではなく、配列でも連想配列でもなければ、 この値
              は文字数ではなく parameter の値の末尾からのオフセットとして使われ、 展開結果は 2 つ
              のオフセットの間の部分文字列となります。  parameter@ ならば、結果は offset から
              始まる length 個の位置パラメータになります。 parameter が @ または * のインデックス
              が付いている配列名ならば、   結果は配列の   ${parameter[offset]}   を先頭とする要素
              length 個となります。 負の offset は、指定された配列の最大のインデックス + 1 からの
              相対値と解釈されます。 連想配列に部分文字列展開した場合の結果は決められていません。
              負のオフセットを指定するときには、:- 式と混同されないよう、 1  つ以上の空白でコロン
              と離す必要があることに注意してください。  位置パラメータを使う場合以外は、 部分文字
              列のインデックスは 0 から始まります。位置パラメータの場合には、 インデックスは 1 か
              ら始まります。  位置パラメータが使われて offset が 0 の場合、 $0 の値が先頭に置かれ
              ます。

       ${!prefix*}
       ${!prefix@}
              前方一致する変数名prefix で始まる全ての変数の名前に展開して、 IFS 特殊変数の最初
              の文字によって区切ります。  ダブルクォートの中で @ が使われた場合、それぞれの変数の
              名前は 別々の単語に展開されます。

       ${!name[@]}
       ${!name[*]}
              配列のキーのリストname が配列変数であれば、配列 name の インデックス (キー) のリ
              ストに展開されます。 name が配列でない場合は、name が設定されていれば 0 に、 そうで
              なければ空に展開されます。 ダブルクォートの中で @  が使われた場合、それぞれのキーは
              別々の単語に展開されます。

       ${#parameter}
              パラメータの長さparameter の値に含まれる文字数に置換されます。 parameter* ま
              たは @ ならば、位置パラメータの数に置換されます。 parameter* または @  が添字に
              なっている配列名ならば、配列中の要素数に置換されます。

       ${parameter#word}
       ${parameter##word}
              パターンに前方一致した部分を取り除くword が展開され、パス名展開の場合と同じよう
              なパターンを作ります。 このパターンが parameter  の値の先頭部分とマッチする場合、展
              開して得られる値は parameter を展開した値から最短一致パターン (“#”の場合)  または最
              長一致パターン (“##” の場合)  を取り除いたものになります。 parameter@ または  *
              である場合、  パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結
              果はリストとして得られます。 parameter@ または * が添字になっている配列変数であ
              る場合、  パターンを削除する操作は配列の全ての要素に順番に適用され、 展開結果はリス
              トとして得られます。

       ${parameter%word}
       ${parameter%%word}
              パターンに後方一致した部分を取り除くword  が展開され、パス名展開の場合と同じよう
              なパターンを作ります。  このパターンが parameter を展開した値の末尾の部分とマッチす
              る場合、展開結果は parameter を展開した値から最短一致パターン (“%” の場合)   または
              最長一致パターン  (“%%” の場合)  を取り除いたものになります。 parameter@ または
              * である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、  展開
              結果はリストとして得られます。 parameter@ または * が添字になっている配列変数で
              ある場合、 パターンを削除する操作は配列の全ての要素に順番に適用され、  展開結果はリ
              ストとして得られます。

       ${parameter/pattern/string}
              パターンの置換pattern が展開され、 パス名展開の場合と同じようなパターンを作りま
              す。 parameter の展開が行われ、 その値のうち pattern に最長一致する部分が string に
              置換されます。  pattern/  で始まる場合には、pattern  に  マッチした部分は全て
              string  に置換されます。   そうでない場合には、最初にマッチした部分だけが置換されま
              す。 pattern# で始まる場合には、パターンは parameter を展開した値の先頭にマッチ
              しなければなりません。 pattern% で始まる場合には、パターンは parameter を展開し
              た値の末尾にマッチしなければなりません。 string が空の場合には pattern にマッチした
              部分は削除されます。  またこの場合には、pattern   の後に続く   /   は省略可能です。
              parameter@  または * である場合、置換操作は全ての位置パラメータに順番に適用さ
              れ、 展開結果はリストとして得られます。 parameter@ または *  が添字になっている
              配列変数である場合、  置換操作は配列の全ての要素に順番に適用され、 展開結果はリスト
              として得られます。

       ${parameter^pattern}
       ${parameter^^pattern}
       ${parameter,pattern}
       ${parameter,,pattern}
              大文字小文字の変換parameter に含まれるアルファベットの大文字小文字を変換します。
              pattern  が展開され、  パス名展開の場合と同じようなパターンを作ります。  ^ 演算子は
              pattern にマッチした小文字を大文字に変換します。 , 演算子は pattern  にマッチした大
              文字を小文字に変換します。  ^^ 演算子と ,, 演算子は、マッチした全ての文字を変換しま
              す。 ^ 演算子と , 演算子の場合は、マッチした最初の文字だけ変換します。 pattern を省
              略した場合、?  を指定したものとして扱われ、 全ての文字にマッチします。 parameter@ または  *  である場合、大文字小文字の変換は全ての位置パラメータに順番に適用され、
              展開結果はリストとして得られます。 parameter が添字に @ または * の付いた配列変数の
              場合は、配列の要素のそれぞれに大文字小文字の変換が適用され、 結果はリストに展開され
              ます。

   コマンド置換
       コマンド置換  (command substitution) を用いると、 コマンド名をコマンドの出力で置き換えられ
       ます。 コマンド置換には以下の 2 つの形式があります:

              $(command)
       または
              `command`

       bashcommand  を実行し、  command  の標準出力でコマンド置換の部分を置き換えます。  この
       際、末尾の改行文字は削除されます。 文字列の途中にある改行文字は削除されませんが、 単語分割
       の際に削除されることがあります。 コマンド置換 $(cat file) は、同じ意味を持ち、  しかも高速
       な $(< file) に置き換え可能です。

       バッククォートを使う古い形式の置換を用いたとき、  バックスラッシュは文字通りの意味を保ちま
       すが、 $, `, \ の前にある場合は例外となります。 コマンド置換は、バックスラッシュが前置され
       ていない バッククォートまでの部分です。 $(command) という形式を用いたときは、 括弧の間にあ
       る全ての文字がコマンドとなります。 特別扱いされる文字はありません。

       コマンド置換は入れ子にできます。 バッククォート形式のときに入れ子を行うには、 内側のバック
       クォートをバックスラッシュでエスケープします。

       置換がダブルクォート内部にある場合には、  置換の結果に対する単語分割とパス名展開は行われま
       せん。

   算術式展開
       算術式展開を使うと、算術式を評価して、その結果に置換できます。  算術式展開のフォーマットを
       次に示します:

              $((expression))

       expression はダブルクォート内部にある場合と同様に扱われますが、 括弧の内側のダブルクォート
       が特別扱いされることはありません。 式に含まれる全てのトークンに対して、 パラメータ展開・文
       字列展開・コマンド置換・クォートの削除が行われます。 算術式置換は入れ子にできます。

       評価は後述の  算術式評価 で示す規則に基づいて行われます。 expression が不正であれば、 bash
       は評価の失敗を示すメッセージを出力し、置換を全く行いません。

   プロセス置換
       プロセス置換 (process substitution) がサポートされるのは、  名前付きパイプ  (FIFO)  または
       ファイル・ディスクリプターの  /dev/fd  形式での指定 をサポートしているシステムです。これは
       <(list) または >(list) の形になります。 プロセス  list  は、その入力や出力が  FIFO  または
       /dev/fd 中の 何らかのファイルに接続された状態で実行されます。 このファイルの名前は、展開の
       結果として、 引き数の形で現在のコマンドに渡されます。 >(list) の形式を使った場合、  ファイ
       ルへの書き込みは list への入力となります。 <(list) の形式を使った場合、 引き数として渡され
       たファイルは list の出力を得るために読み込まれます。

       利用可能であれば、プロセス置換 (process substitution) は、  パラメータ展開、変数展開、コマ
       ンド置換、算術式展開と同時に行われます。

   単語の分割
       パラメータ展開、コマンド置換、算術式展開が行われたのが、ダブル    クォートの内側ではない場
       合、シェルは展開の結果をスキャンして、 単語分割 を行います。

       シェルは IFS のそれぞれの文字を区切り文字として扱い、 ほかの展開の結果をこれらの文字によっ
       て単語に分割します。  IFS が設定されていないか、その値がデフォルト値の <スペース><タブ><改
       行> と全く同じならば、前段の展開の結果の先頭や末尾の <スペース>, <タブ>, <改行> の並びは無
       視され、  先頭と末尾以外の IFS 文字の並びで単語が区切られます。 IFS の値がデフォルト以外の
       ときに、 スペース や タブ という空白文字の並びが単語の先頭と末尾で無視されるのは、  その空
       白文字が  IFS  の値に含まれるとき  ( IFS の空白文字の一つであるとき) だけです。 IFS に含ま
       れ、 IFS 空白文字ではない文字は全て、隣接する任意の IFS 空白文字と一緒になってフィールドの
       区切りとなります。 IFS 空白文字の列も区切り文字として扱われます。 IFS の値が空文字列であれ
       ば、単語分割は全く行われません。

       明示的に指定した空の引き数 ("" または '')  は削除されずに残ります。 クォートされていない暗
       黙的な空の引き数が、 値を持たないパラメータを展開した結果として得られますが、 これらは削除
       されます。  値を持たないパラメータがダブルクォート内部で展開されると、  空である引き数とな
       り、消されずに残ります。

       展開が行われなければ単語分割も行われない点に注意してください。

   パス名展開
       -f  オプションが指定されていなければ、単語分割を行った後に bash はそれぞれの単語が *, ?, [
       を含んでいるかどうか調べます。 これらの文字のいずれかが見つかると、その単語は パターン  と
       みなされ、 パターンにマッチするファイル名を アルファベット順にソートしたリストに置換されま
       す。 マッチするファイル名が見つからず、かつシェルのオプション nullglob  が無効ならば、その
       単語は変更されずにそのまま残ります。  nullglob  オプションが設定されていて、かつマッチする
       ファイル名が見つからなければ、 その単語は削除されます。 failglob  オプションが設定されてい
       て、かつマッチするファイル名が見つからなければ、  エラーメッセージが表示されコマンドは実行
       されません。 シェルのオプション nocaseglob  が有効ならば、マッチングにおいてアルファベット
       の大文字と小文字は区別さ れません。 パターンをパス名展開に使うとき、名前の先頭やスラッシュ
       の直後の “.” は明示的にマッチさせなければなりません。ただしシェルのオプション dotglob が設
       定されている場合は例外です。  パス名のマッチングを行うとき、  スラッシュ文字は必ず明示的に
       マッチさせなければなりません。  これ以外の場合には、  “.”   が特別扱いされることはありませ
       ん。 シェルのオプション nocaseglob, nullglob, failglob, dotglob の詳しい説明については、後
       述の シェルの組み込みコマンド に書かれている shopt の説明を参照してください。

       シェル変数  GLOBIGNORE  を使って、  パターン  にマッチするファイル名の集合を制限できます。
       GLOBIGNORE  が設定されていれば、マッチするファイル名のうち GLOBIGNORE 中のパターンにもマッ
       チしたものは、  マッチしたもののリストから取り除かれます。  ファイル名  “.”“..”GLOBIGNORE  に空でない値が設定されていても必ず無視されます。しかし、 GLOBIGNORE に空でない
       値を設定するとシェルオプションの dotglob が有効になるので、 “.” で始まるほかのファイル名は
       全てマッチします。   “.”    で始めるファイル名を無視する古い動作をさせるには、   “.*”GLOBIGNORE のパターンに含めてください。 GLOBIGNORE を unset すると、 dotglob  オプションは
       無効になります。

       パターンマッチング

       パターンに含まれる文字のうち、以下の特殊パターン文字以外の文字は、    自分自身にマッチしま
       す。NUL 文字がパターン中に現われてはいけません。  バックスラッシュは直後の文字をエスケープ
       します。 このバックスラッシュは、マッチングでは無視されます 特殊パターン文字をその文字その
       ものにマッチさせるためには、 クォートしなければなりません。

       特殊パターン文字は以下の意味を持っています:

              *      空文字列を含む、任意の文字列にマッチします。 シェルオプション globstar  が有
                     効で、 * がパス名展開に用いられる場面では、 連続する 2 つの * だけのパターン
                     が使われると、 その階層以下のディレクトリとそのサブディレクトリ、 そこにある
                     全てのファイルにマッチします。 2 つ連続した * の後に / が続く場合には、 ディ
                     レクトリとそのサブディレクトリのみにマッチします。
              ?      任意の 1 文字にマッチします。
              [...]  括られた文字のうち任意の 1 文字にマッチします。 2 つの文字の間にハイフンを入
                     れたものは、 範囲表現 (range expression) を表します。 ソート順で両端を含む 2
                     つの文字の間にある任意の 1 文字と マッチします。  ソートには現在のロケールの
                     照合順序 (collating sequence)  と文字セットが用いられます。 [ の次の文字が !
                     または ^ ならば、括られた文字に含まれない任意の 1 文字にマッチします。  範囲
                     表現における文字のソート順は、  現在のロケール  (およびシェル変数 LC_COLLATE
                     が指定されていればその値)  によって決定されます。 - は、文字集合の最初または
                     最後の文字として含めると マッチングの対象にできます。 ] は、文字集合の最初の
                     文字として含めるとマッチングの対象にできます。

                     [] の間では、文字クラス (character  classes)  を指定できます。  指定には
                     [:class:] という記法を使います。ここで class は POSIX 標準で定義されている以
                     下のクラスのいずれかです:
                     alnum alpha ascii blank cntrl digit graph lower print punct space upper word
                     xdigit
                     文字クラスは、そのクラスの属する任意の文字にマッチします。  文字クラス  word
                     は、文字、数字、_ にマッチします。

                     [] の間では、等値クラス (equivalence  class)  を指定できます。  指定には
                     [=c=] という記法を使います。 これは現在のロケールにおける定義において c と同
                     じ 照合重み (collation weight) を持つ全ての文字にマッチします。

                     [] の間では、[.symbol.] という記述は照合シンボル symbol にマッチします。

       組み込みコマンドの shopt を使ってシェルのオプション extglob が有効にされていると、  拡張パ
       ターンマッチング演算子がいくつか認識されるようになります。 以下の説明では、pattern-list| で区切られた 1 つ以上のパターンのリストであるものとします。 以下のサブパターンを 1  つあ
       るいは複数使うことにより、 複合パターンを作れます。

              ?(pattern-list)
                     与えられたパターンが 0 回または 1 回現われるとマッチします。
              *(pattern-list)
                     与えられたパターンが 0 回以上現われるとマッチします。
              +(pattern-list)
                     与えられたパターンが 1 回以上現われるとマッチします。
              @(pattern-list)
                     与えられたパターンに 1 回だけマッチします。
              !(pattern-list)
                     与えられたパターンのどれでもないものにマッチします。

   クォートの削除
       先に処理される展開の後、クォートされていない  \, ', " のうち、先の展開の結果でないものは全
       て削除されます。

リダイレクト

       シェルが解釈する特別な記法を用いると、コマンドの実行前に入出力を リダイレクト できます。ま
       たリダイレクトを使うと、 現在のシェル実行環境に対してファイルをオープンしたり クローズした
       りできます。以下に示すリダイレクト演算子は、 単純なコマンド の前や途中に置くことができ、ま
       た コマンド の後に置けます。 リダイレクトは左から右へと、現われた順に処理されます。

       ファイル・ディスクリプター番号で始まるリダイレクトでは、 代わりに {varname} という形式の単
       語で始めることもできます。 この場合、>&- と <&- 以外のリダイレクト演算子では、 シェルは 10
       より大きいファイル・ディスクリプターを割り当て、 varname に代入します。 {varname} で始まる
       >&- や <&- の場合には、varname の値は クローズするファイル・ディスクリプターを示します。

       以下の説明においては、ファイル・ディスクリプター番号が省略され、  かつリダイレクト演算子の
       最初の文字が  <  ならば、リダイレクトは標準入力  (ファイル・ディスクリプター 0) を参照しま
       す。 リダイレクト演算子の最初の文字が > ならば、リダイレクトは標準出力 (ファイル・ディスク
       リプター 1) を参照します。

       以下の説明では、リダイレクト演算子の次の単語に対しては、  特に説明しない限り、  ブレース展
       開・チルダ展開・パラメータ展開・コマンド置換・  算術式展開・クォート削除・パス名展開・単語
       分割が行われます。 その単語が複数の単語に展開された場合はエラーになります。

       リダイレクトの順番には意味がある点に注意してください。 例えば、次のコマンド

              ls > dirlist 2>&1

       は標準出力と標準エラー出力を両方ともファイル dirlist に書き込みますが、次のコマンド

              ls 2>&1 > dirlist

       では標準出力だけがファイル  dirlist に書き込まれます。なぜなら後者の場合には、標準エラー出
       力は dirlist にリダイレクトされる前の標準出力の複製となるからです。

       bash は、 以下の表にあるようなファイル名がリダイレクトに使用されると、  それらを特別に扱い
       ます。

              /dev/fd/fd
                     fd が有効な整数ならばファイル・ディスクリプター fd が複製されます。
              /dev/stdin
                     ファイル・ディスクリプター 0 が複製されます。
              /dev/stdout
                     ファイル・ディスクリプター 1 が複製されます。
              /dev/stderr
                     ファイル・ディスクリプター 2 が複製されます。
              /dev/tcp/host/port
                     host  が有効なホスト名またはインターネットアドレスで port が整数のポート番号
                     ならば、 bash は対応するソケットに対して TCP 接続のオープンを試みます。
              /dev/udp/host/port
                     host が有効なホスト名またはインターネットアドレスで port  が整数のポート番号
                     ならば、 bash は対応するソケットに対して UDP 接続のオープンを試みます。

       ファイルのオープンや作成に失敗すると、リダイレクトも失敗します。

       9  より大きいファイル・ディスクリプターを使ったリダイレクトには注意が 必要です。シェルが内
       部的に使うファイル・ディスクリプターと競合する場合が あるからです。

   入力のリダイレクト
       入力をリダイレクトすると、 word を展開した結果の名前を持つファイルがオープンされ、  ファイ
       ル・ディスクリプター n で読み込めるようになります。 n が指定されていなければ、読み込みは標
       準入力 (ファイル・ディスクリプター 0) で行われます。

       入力のリダイレクトは、一般的には以下の形式です:

              [n]<word

   出力のリダイレクト
       出力をリダイレクトすると、 word の展開した結果の名前を持つファイルがオープンされ、  ファイ
       ル・ディスクリプター n で書き込めるようになります。 n が指定されていなければ、書き込みは標
       準出力 (ファイル・ディスクリプター 1) に行われます。  ファイルが存在しなかった場合は作成さ
       れます。 ファイルが存在した場合はサイズ 0 に切り詰められます。

       出力のリダイレクトは、一般的には以下の形式です:

              [n]>word

       リダイレクト演算子が  >  であり、かつ 組み込みコマンド setnoclobber オプションが有効に
       なっている場合、 word の展開で得たファイルが存在し、  かつそれが通常ファイルならば、リダイ
       レクトは失敗します。  リダイレクト演算子が >| の場合、もしくは リダイレクト演算子が > で組
       み込みコマンド setnoclobber オプションが有効になっていない場合、 word という名前のファ
       イルが存在していてもリダイレクトが試みられます。

   リダイレクトによる追加出力
       この形式を使って出力のリダイレクトを行うと、 word を展開した結果の名前を持つファイルがオー
       プンされ、 ファイル・ディスクリプター n に対する出力がこのファイルに追加されるようになりま
       す。 n を指定しなければ、標準出力 (ファイル・ディスクリプター 1) で追加されます。 ファイル
       が存在しなければ、新しく作られます。

       追加出力は一般的には以下の形式です:

              [n]>>word

   標準出力と標準エラー出力のリダイレクト
       この構造を使うと、 標準出力 (ファイル・ディスクリプター  1)  と標準エラー出力  (ファイル・
       ディスクリプター 2) の両方を、 word を展開した結果の名前を持つファイルにリダイレクトできま
       す。

       標準出力と標準エラー出力に対する形式は 2 つあります:

              &>word>&word

       両者のうち望ましいのは前者の方です。 上記は以下と同じ意味です:

              >word 2>&1

   標準出力と標準エラー出力の追加出力
       この構造を使うと、 標準出力 (ファイル・ディスクリプター  1)  と標準エラー出力  (ファイル・
       ディスクリプター 2) の両方を、 word を展開した結果の名前を持つファイルに追加できます。

       標準出力と標準エラー出力の追加出力は以下の形式です:

              &>>word

       これは次のものと同じ意味です:

              >>word 2>&1

   ヒアドキュメント(Here Documents)
       この形式のリダイレクトを用いると、 シェルは現在のソースから入力を読み込みます。 この読み込
       みは word  を単独で含む行  (末尾にブランク文字があってはいけません)   が現われるまで続きま
       す。 その行までに読み込んだ行は、 コマンドの標準入力として扱われます。

       ヒアドキュメントの形式を以下に示します:

              <<[-]word
                      here-document
              delimiter

       word   に対するパラメータ展開・コマンド置換・算術式展開・   パス名展開は全く行われません。
       word  が一部でもクォートされている場合は、  delimiterword   のクォートをほどいた結果
       (クォート文字を削除した結果) となり、 ヒアドキュメントに含まれる行では展開が行われなくなり
       ます。 word がクォートされていなければ、 ヒアドキュメント中の全ての行に対して パラメータ展
       開・コマンド置換・算術式展開が行われます。      word      がクォートされていない場合には、
       \<newline> という文字列は無視され、 \, $, ` といった文字は \  を用いてクォートしなければな
       りません。

       リダイレクト演算子が <<- ならば、行頭にあるタブ文字は全て入力行および delimiter を含む行か
       ら取り除かれます。 これにより、シェルスクリプト中のヒアドキュメントを 自然な形でインデント
       させることができます。

   ヒアストリング(Here Strings)
       ヒアドキュメントの変形で、以下の形式です:

              <<<word

       word は展開されてコマンドの標準入力に与えられます。

   ファイル・ディスクリプターの複製
       リダイレクト演算子

              [n]<&word

       を使うと入力ファイル・ディスクリプターを複製できます。  word が 1 桁以上の数値に展開された
       場合、 n  で示されるファイル・ディスクリプターが生成され、  word  で指定された数値のファイ
       ル・ディスクリプターのコピーとなります。 word に含まれる数値が入力用にオープンされたファイ
       ル・ディスクリプターを 指していない場合、リダイレクト・エラーが起きます。 word  を評価した
       結果が  - となった場合、ファイル・ディスクリプター n はクローズされます。 n が指定されてい
       ない場合、標準入力 (ファイル・ディスクリプター 0) が使われます。

       同様に、演算子

              [n]>&word

       を使って出力ファイル・ディスクリプターを複製できます。 n  が指定されていない場合は、標準出
       力 (ファイル・ディスクリプター 1) が使われます。 word に含まれる数値が、出力用にオープンさ
       れた ファイル・ディスクリプターを指していない場合、 リダイレクト・エラーが起きます。特別な
       場合ですが、  n が省略され、かつ word が 1 桁以上の数字には展開されなかった場合、 前に説明
       したように標準出力と標準エラー出力がリダイレクトされます。

   ファイル・ディスクリプターの変更
       リダイレクト演算子

              [n]<&digit-

       を使うと、ファイル・ディスクリプターの digitn に変更します。 n  が指定されていない場合
       は、標準入力  (ファイル・ディスクリプター  0) が使われます。 digitn に複製された後にク
       ローズされます。

       同様に、演算子

              [n]>&digit-

       を使うと、ファイル・ディスクリプターの digitn に変更します。 n  が指定されていない場合
       は、標準出力 (ファイル・ディスクリプター 1) が使われます。

   読み書きのためのファイル・ディスクリプターのオープン
       リダイレクト演算子

              [n]<>word

       を使うと、  word を展開した結果の名前を持つファイルがファイル・ディスクリプター n での読み
       書きのためにオープンされます。 n が指定されていなければ、 ファイル・ディスクリプター 0  で
       読み書きが行われます。 ファイルが存在しなければ、新しく生成されます。

エイリアス

       エイリアス(alias) を使うと、 ある単語が単純なコマンドの先頭の単語として使われた場合に、 こ
       の文字列を別の単語に置換できます。 シェルはエイリアスのリストを管理しています。 このリスト
       は組み込みコマンドの  aliasunalias を使って設定および削除できます (後述の シェルの組み
       込みコマンド を参照)。 各コマンドの最初の単語がクォートされていない場合、 エイリアスかどう
       かが確認され、          エイリアスならばその単語はそのエイリアスのテキストと置換されます。
       /$`=、シェルの  メタ文字  (metacharacters)  やクォート文字はエイリアス名には使えませ
       ん。 エイリアス名と置換されるテキストには、 シェルの入力として有効なものは何でも含めること
       ができます。 これには先に挙げた メタ文字 も含まれます。 置換されたテキストの最初の単語に対
       しても エイリアスかどうかの評価がされますが、 最初の単語が展開されるエイリアスと同じ場合に
       は 展開は一度しか行われません。つまり lsls -F のエイリアスとなっているような場合には、
       bash  は置換される文字列を再帰的に展開することはありません。  エイリアスの値の最後の文字が
       ブランク文字 の場合、エイリアスに続く次のコマンドの単語に対しても エイリアス展開が試みられ
       ます。

       エイリアスは alias コマンドで作成とリスト表示を行い、 unalias コマンドで削除します。

       置換されるテキストに引き数を入れる仕組みはありません。  引き数が必要ならば、シェル関数を使
       わなければなりません (後述の 関数 を参照)

       シェルが対話的でないときには、 shopt コマンドによって expand_aliases  オプションが設定され
       ていない場合に限り、  エイリアスの展開は行われません (後述の シェルの組み込みコマンド にお
       ける shopt の説明を参照)。

       エイリアスの定義や利用に関係する規則には、紛らわしい点があります。 bash は、ある行に書かれ
       ているコマンドを実行する前に必ず、  少なくとも 1 回は行全体を読み込みます。 エイリアスが展
       開されるのはコマンドを読み込んだときであり、 実行するときではありません。 したがって、別の
       コマンドと同じ行でエイリアス定義を行った場合には、  次の入力行が読み込まれるまではエイリア
       スの効果は現われません。 同じ行にあるエイリアス定義の後のコマンドは、 新しいエイリアスの影
       響を受けません。 この動作は関数を実行する場合にも問題になります。 エイリアスが展開されるの
       は関数定義が読み込まれるときであり、 関数が実行されるときではありません。 なぜなら、関数定
       義自身も複合コマンドだからです。 その結果として、関数内で定義されたエイリアスは、 その関数
       が実行されるまでは利用できません。  安全のため、エイリアス定義は独立した行で行うべきです。
       複合コマンド内で alias を使ってはいけません。

       ほとんど全ての用途において、 シェル関数でエイリアスを代用できます。

関数

       シェル関数は、後で使うために一連のコマンドを保存するものです。 シェル関数の定義は既に シェ
       ルの文法 で説明しています。 シェル関数名が単純なコマンド名として使われた場合、  関数名に対
       応するコマンド群が実行されます。  関数は現在のシェルのコンテキスト内で実行されます。  つま
       り、新しいプロセスを生成して関数を処理することはありません (これはシェルスクリプトと対照的
       な点です)。  関数の実行時には、関数に与えた引き数が位置パラメータとなります。 特殊パラメー
       タ # は更新され、この変更が反映されます。 特殊パラメータ 0 は変わりません。 関数の実行中は
       FUNCNAME 変数の最初の要素に関数の名前が設定されます。

       上記以外は、シェル実行環境の状態は全て、関数とその呼び出し側で同じになります。  ただし、以
       下の例外があります: DEBUGRETURN のトラップ (後述の シェルの組み込みコマンド の項で、組
       み込みコマンド  trap  の説明を参照) は、 関数に trace 属性 (後述の組み込みコマンド declare
       の説明を参照) が与えられている場合や、-o functrace シェルオプションが 組み込みコマンド set
       によって有効になっている  (つまり、全ての関数が  DEBUG  RETURN のトラップを継承している)
       場合を除いて 継承されません。 ERR トラップは、-o errtrace シェルオプションが有効になってい
       ない限り 継承されません。

       関数ローカルの変数は、組み込みコマンド local で宣言できます。 普通は、変数とその値は関数と
       その呼び出し側で共有されます。

       FUNCNEST 変数に 0 より大きい数値をセットすると、  関数呼び出しを何重まで許すかの最大レベル
       を決めます。 このレベルを超えて関数を呼び出すと、コマンドが異常終了します。

       組み込みコマンド  return が関数中で実行された場合、関数は完了し、 関数呼び出しの次のコマン
       ドから実行が再開されます。 再開される前に、RETURN トラップに設定されたコマンドが実行されま
       す。 関数の完了時には、位置パラメータの値と特殊パラメータ # の値は、関数の実行前の値に戻り
       ます。

       関数の名前と定義をリスト表示するには、組み込みコマンドの declaretypeset を、オプション
       -f  を付けて実行します。 declaretypeset をオプション -F で実行すると、関数名だけがリス
       ト表示されます。 また、extdebug シェルオプションが有効になっていると、  ソースファイルと行
       番号も表示されます。 関数をエクスポートして、 サブシェルでその関数が自動的に定義されている
       状態にできます。 これを行うには、組み込みコマンドの export-f  オプションを付けて実行し
       ます。  組み込みコマンドの unset-f オプションを付けて実行することで、 関数定義を削除す
       ることもできます。  同じ名前のシェル関数と変数がシェルの子プロセスにエクスポートされると、
       同じ環境の中に全く同じ名前のエントリが複数できてしまうことに  注意してください。これが問題
       を起こす場合には注意が必要です。

       関数は再帰させることができます。FUNCNEST 変数を使うと、 関数の呼び出しスタックの深さを制限
       し、関数の呼び出し回数を制限する ことができます。 デフォルトでは再帰呼び出し回数に制限は課
       せられていません。

算術式評価

       シェルにおいては、特定の状況下で算術式を評価させることができます  (組み込みコマンドの  let算術式展開 を参照)。 評価は固定長の整数として行われ、 オーバーフローのチェックは行われ
       ません。 ただし、0 での除算はトラップされ、エラーとしてのフラグが立てられます。 演算子とそ
       の優先度、結合規則は  C 言語と同じです。 以下のリストは、 同じ優先度を持つ演算子をグループ
       としてまとめて列挙したものです。 優先度の高いものから順に列挙しています。

       id++ id--
              変数を評価し、その後 increment (加算)/ decrement (減算) する。
       ++id --id
              変数を increment (加算) / decrement (減算) してから評価する。
       - +    単項式の負と正
       ! ~    論理的否定とビット単位の否定
       **     指数 (累乗)
       * / %  乗算、除算、剰余
       + -    加算と減算
       << >>  左ビットシフトと右ビットシフト
       <= >= < >
              比較
       == !=  等値と非等値
       &      ビット単位の AND
       ^      ビット単位の排他的 OR
       |      ビット単位の OR
       &&     論理的 AND
       ||     論理的 OR
       expr?expr:expr
              条件付き実行
       = *= /= %= += -= <<= >>= &= ^= |=
              代入
       expr1 , expr2
              コンマ

       シェル変数をオペランドにすることもできます。  パラメータ展開は式の評価より前に行われます。
       式の中では、シェル変数を  (パラメータ展開規則を用いずに)  変数名で参照できます。  値が空の
       シェル変数や宣言されていないシェル変数は、  パラメータの展開の文法を使わずに名前を参照され
       ると、 0 として評価されます。 変数の値は、変数が参照されたときや、declare -i によって 整数
       属性が設定された変数に値が代入されるときに、 算術式として評価されます。 空の値は 0  として
       評価されます。 式で用いるためにシェル変数の 整数属性 を有効にする必要はありません。

       先頭が  0 である定数は 8 進数として解釈されます。 先頭が 0x または 0X ならば 16 進数として
       解釈されます。 それ以外の場合には、数値は [base#]n の形式で表します。ここで base は 2 から
       64  の間の  10 進数であり、算術的な意味での基数を表します。 n はその基数における数を表しま
       す。 base# が省略されると 10 進数となります。 ある桁において 9  より大きい数字を表すには文
       字を使います。  文字を使う場合には、アルファベット小文字、大文字、@,  _ をこの順番で使いま
       す。 base が 36 以下の場合には、大文字と小文字は区別されず、  大文字と小文字のどちらを使っ
       ても 10 から 35 までの数字を表現できます。

       演算子は優先度の順に評価されます。括弧内にある部分式は最初に評価され、  前述の優先規則より
       も優先させることができます。

条件式

       条件式は複合コマンド [[ と組み込みコマンドの test および [  によって使用でき、ファイルの属
       性を調べたり、 文字列比較や算術式比較を行ったりできます。 式は以下に示す単項のプライマリや
       二値のプライマリから構成されます。 プライマリのいずれかの file 引き数が /dev/fd/n という形
       式ならば、  ファイル・ディスクリプター n が調べられます。 プライマリのいずれかの file 引き
       数が /dev/stdin/dev/stdout/dev/stderr のいずれかであれば、  対応するファイル・ディスク
       リプター 0、1、2 が調べられます。

       ほかに指定されていなければ、ファイルに対するプライマリはシンボリックリンク  を辿り、リンク
       自身ではなくリンク先を対象とします。

       [[ では <> の演算子は現在のロケールでの辞書順で 比較します。test コマンドは ASCII 順で
       比較します。

       -a file
              file が存在すれば真となります。
       -b file
              file が存在し、かつブロック特殊ファイルならば真となります。
       -c file
              file が存在し、かつキャラクター特殊ファイルならば真となります。
       -d file
              file が存在し、かつディレクトリならば真となります。
       -e file
              file が存在すれば真となります。
       -f file
              file が存在し、かつ通常ファイルならば真となります。
       -g file
              file が存在し、かつ set-group-id されていれば真となります。
       -h file
              file が存在し、かつシンボリックリンクならば真となります。
       -k file
              file が存在し、かつ “sticky” ビットが設定されていれば真となります。
       -p file
              file が存在し、かつ名前付きパイプ (FIFO) ならば真となります。
       -r file
              file が存在し、かつ読み込み可能ならば真となります。
       -s file
              file が存在し、かつそのサイズが 0 より大きければ真となります。
       -t fd  ファイル・ディスクリプター  fd がオープンされており、かつ端末を参照していれば真とな
              ります。
       -u file
              file が存在し、 かつ set-user-id ビットが設定されていれば真となります。
       -w file
              file が存在し、かつ書き込み可能ならば真となります。
       -x file
              file が存在し、かつ実行可能ならば真となります。
       -G file
              file が存在し、かつ (実行中のシェルの)  実効グループ ID  に所有されていれば真となり
              ます。
       -L file
              file が存在し、かつシンボリックリンクならば真となります。
       -N file
              file が存在し、 かつ前回読み込まれた以降に修正されていれば真となります。
       -O file
              file  が存在し、かつ (実行中のシェルの)  実効ユーザ ID に所有されていれば真となりま
              す。
       -S file
              file が存在し、かつソケットならば真となります。
       file1 -ef file2
              file1file2 とで デバイス番号と i-ノード番号が同じならば真となります。
       file1 -nt file2
              file1 が (変更日時に関して) file2 より新しいか、 file1 が存在するが file2  が存在し
              なければ、真となります。
       file1 -ot file2
              file1file2 より古いか、 file2 が存在するのに file1 が存在しなければ、真となりま
              す。
       -o optname
              シェルオプション optname が有効ならば真となります。後述する組み込みコマンド set  に
              対するオプションの説明中にある -o オプションを参照してください。
       -v varname
              シェル変数 varname がセットされている (値が代入されている) ならば真となります。
       -z string
              string の長さが 0 ならば真となります。
       string
       -n string
              string の長さが 0 でなければ真となります。

       string1 == string2
       string1 = string2
              文字列が同じならば真となります。 POSIX に準拠する形で test コマンドを使う場合には =
              を使う必要があります。

       string1 != string2
              2 つの文字列が異なれば真となります。

       string1 < string2
              現在のロケールにおいて、string1string2 よりも  辞書順で前にある場合に真となりま
              す。

       string1 > string2
              現在のロケールにおいて、string1string2 よりも 辞書順で後にある場合に真となりま
              す。

       arg1 OP arg2
              OP-eq, -ne, -lt, -le, -gt, -ge.  のいずれかです。  これらの算術二値演算子が真を
              返すのはそれぞれ、 arg1arg2 に対して等しい場合、 等しくない場合、小さい場合、小
              さいか等しい場合、大きい場合、 大きいか等しい場合です。 arg1arg2 には、正または
              負の整数を使用できます。

単純なコマンドの展開

       単純なコマンドを実行すると、シェルは以下に示す展開、代入、  リダイレクションを左から右の順
       で実行します。

       1.     パーザが変数代入  (コマンド名の前にあるもの)   またはリダイレクションと判断した単語
              は、 保存されて後で処理されます。

       2.     変数代入でもリダイレクションでもない単語が展開されます。 もし展開の後に残っている単
              語があれば、 その最初の単語がコマンド名となり、残りが引き数となります。

       3.     リダイレクションが前述の リダイレクト で説明したように実行されます。

       4.     変数代入の  =  の後にあるテキストに対して、チルダ展開、  パラメータ展開、コマンド置
              換、算術式展開、クォート削除が行われます。 この処理は変数を代入する前に行われます。

       コマンド名が残らなかった場合には、    変数を代入した結果が現在のシェル環境に効果を及ぼしま
       す。 それ以外の場合、変数は実行されるコマンドの環境に追加されるだけで、 現在のシェル環境に
       は影響を与えません。 読み込み専用の変数に対して代入をしようとするとエラーが発生し、 そのコ
       マンドは 0 でないステータスで終了します。

       コマンド名が残らなかった場合、リダイレクションは行われますが、  現在のシェル環境は影響を受
       けません。  リダイレクションのエラーが起きると、  コマンドは  0 でないステータスで終了しま
       す。

       展開の後にコマンド名が残っている場合、後述するように実行が進行します。  そうでない場合はコ
       マンドは終了します。 展開のいずれかがコマンド置換である場合には、 コマンドの終了ステータス
       は 最後に実行されたコマンド置換の終了ステータスになります。 コマンド置換が行われなかった場
       合には、 コマンドはステータス 0 で終了します。

コマンドの実行

       コマンドが単語に分割された後に、  単純なコマンドとそれに対する引き数リスト (引き数リストは
       省略可能) となった場合、以下の動作が行われます。

       コマンド名にスラッシュが含まれない場合、 シェルはコマンドの位置を特定しようとします。 その
       名前のシェル関数が存在すれば、前に  関数 で説明したようにその関数が呼び出されます。 名前が
       関数にマッチしない場合には、 シェルはシェルの組み込みコマンドのリストを探します。 マッチす
       るものがあった場合、その組み込みコマンドが呼び出されます。

       名前がシェル関数も組み込みコマンドでなく、 かつスラッシュを含まない場合には、 bashPATH
       の各要素を検索し、その名前の実行ファイルを含むディレクトリを探します。 bash はハッシュ表を
       使って実行ファイルの完全なパス名を記憶します (後述の シェルの組み込みコマンドhash の項
       を参照)。 PATH に含まれるディレクトリの完全な探索は、 そのコマンドがハッシュ表の中にない場
       合にのみ行われます。  探索に失敗すると、シェルは command_not_found_handle という名前のシェ
       ル関数の定義を探します。  存在する場合には、元のコマンドと元のコマンドの引き数を引き数とし
       て、 この関数を呼び出します。この関数の終了ステータスがシェルの 終了ステータスとなります。
       この関数が定義されていない場合には、シェルはエラーメッセージを 表示して終了ステータス  127
       を返します。

       検索に成功したか、コマンド名に 1 つ以上のスラッシュが含まれる場合には、 シェルは指定された
       プログラムを独立した実行環境で実行します。 引き数 0 には指定された名前が設定され、  コマン
       ドに対する残りの引き数には (もしあれば) 指定された引き数が設定されます。

       このファイルが実行可能フォーマットでないために実行が失敗し、  かつディレクトリでもない場合
       には、 このファイルは シェルスクリプト(shell script)であるとみなされます。  シェルスクリプ
       トとは、シェルのコマンドが書かれているファイルのことです。  シェルスクリプトを実行するため
       にサブシェルが呼び出されます。 このサブシェルは自分自身を再初期化し、 シェルスクリプトを処
       理するために 新しいシェルが起動されたかのような結果になります。ただし、 親が記憶しているコ
       マンドの位置 (後述の シェルの組み込みコマンド における hash の項を参照) は子にも引き継がれ
       ます。

       プログラムが  #! で始まるファイルである場合、 最初の行の残りの部分はこのプログラムのインタ
       プリタを指定します。  シェルは指定されたインタプリタをオペレーティングシステム上で実行しま
       す。 オペレーティングシステムは、この実行可能フォーマットを直接処理しません。 インタプリタ
       に対する引き数は、 プログラムの先頭の行のインタプリタ名の後の省略可能な引き数 1 つと、  そ
       の後のプログラム名、さらに (もしあれば) その後のコマンドへの引き数から構成されます。

コマンド実行環境

       シェルは以下の要素からなる実行環境(execution environment)を持ちます:

       ·      起動時にそのシェルが継承したオープンされているファイル。     これは組み込みコマンド
              exec に与えられている リダイレクション機能で変更されます。

       ·      現在の作業ディレクトリ (current working directory)。これは cd, pushd, popd で設定す
              るか、 あるいは起動時にそのシェルが継承します。

       ·      ファイル作成モードのマスク。  これは umask で設定するか、あるいはそのシェルの親から
              継承します。

       ·      trap で設定された現在のトラップ。

       ·      シェルのパラメータ。これは変数の代入か set で設定されるか、  あるいはその環境内にあ
              る親シェルから継承します。

       ·      実行中に定義されるか、その環境内にある親シェルから継承したシェル関数。

       ·      起動時に有効にしたか  (デフォルト値あるいはコマンドライン引き数で設定した値)、  set
              で有効にしたオプション。

       ·      shopt で有効にしたオプション。

       ·      alias で定義したシェルエイリアス。

       ·      各種プロセスID。これにはバックグラウンドジョブや $$ の値、 PPID の値が含まれます。

       組み込みコマンドやシェル関数以外の単純なコマンドを実行するとき、  このコマンドは独立した実
       行環境内で呼び出されます。 この環境は以下の要素から成り立っています。 特に断らない限り、こ
       の値はシェルから引き継がれます。

       ·      シェルのオープンしているファイルと、   コマンドに対するリダイレクションで指定した変
              更・追加を加えたもの。

       ·      現在の作業ディレクトリ

       ·      ファイル作成モードのマスク

       ·      エクスポートするシェル変数や関数と、   そのコマンドに対してエクスポートされた変数。
              これらは環境で渡されます。

       ·      シェルに捕捉されるトラップは、 そのシェルの親から継承された値に再設定されます。  そ
              のシェルにより無視されるトラップは無視されます。

       この独立の環境内で呼び出されたコマンドが、 (親である) シェルの実行環境に影響を及ぼすことは
       できません。

       コマンド置換や括弧でグループ化されたコマンド、非同期コマンドは、  サブシェル環境内で呼び出
       されます。 このサブシェル環境はシェル環境を複製したものです。 ただし、シェルにより捕捉され
       るトラップは、 そのシェルの起動時に親から継承した値に再設定されます。 パイプラインの一部と
       して起動された組み込みコマンドは、  サブシェル環境で実行されます。サブシェル環境に対して行
       われた変更は、 元のシェル実行環境に影響を及ぼすことはできません。

       コマンド置換を実行するために起動されたサブシェルは、 -e オプションの値を親シェルから継承し
       ます。 posix モードでない場合、bash はそのサブシェルでは -e オプションをクリアします。

       コマンドの後に & が付けられたときに、ジョブ制御が有効でなければ、 コマンドのデフォルトの標
       準入力は空ファイル /dev/null となります。 そうでなければ、呼び出されたコマンドは、呼び出し
       たシェルの ファイル・ディスクリプターを、リダイレクトも含めて継承します。

環境

       プログラムの起動時には、 環境 (environment) と呼ばれる文字列の配列が渡されます。 これは 
       数名- のペアからなるリストで、 変数名= という形になります。

       シェルは、環境を操作する様々な方法を提供しています。  起動時には、シェルは自分自身の環境を
       調べ、  見つかった名前それぞれに対してパラメータを生成し、 それに自動的に子プロセスへの 
       クスポート (export) の印を付けます。実行されたコマンドは環境を継承します。 export コマンド
       または  declare  -x  コマンドを用いると、 パラメータや関数の追加と削除を環境に対して行えま
       す。 環境内のパラメータの値が変更されると、 新しい値は環境の一部となり、古い値と置き換わり
       ます。  実行されたコマンドが継承する環境は、 シェルの最初の環境から、 変数の値がシェル中で
       変更されたり、 一部のペアが unset コマンドで削除されたり、 export コマンドや declare -x コ
       マンドで追加されたりしたものになります。

       単純なコマンド や関数に対する環境は、一時的に修正できます。 これは、既に パラメータ の項で
       説明したように、パラメータ代入を前に置くことで行います。    このような代入が影響を与えるの
       は、 そのコマンドが参照する環境だけです。

       -k オプションを設定 (後述の組み込みコマンド set を参照) すると、コマンド名の前に置いたもの
       だけではなく、 全ての パラメータ代入がそのコマンドの環境に影響を与えます。

       bash が外部コマンドを起動したときには、変数  _  にはコマンドの完全なファイル名が設定され、
       環境変数としてそのコマンドに渡されます。

終了ステータス

       実行したコマンドの終了ステータスは、waitpid システムコールまたはそれに相当する関数が返した
       値です。 終了ステータスは 0 から 255 の値を取りますが、後述するように、 125 より大きい値は
       特別にシェルによって使われることがあります。  シェルの組み込みコマンドや複合コマンドの終了
       ステータスも、 同じ範囲に限定されています。 環境によっては、シェルは仕様で決められた失敗の
       モードを表す 特別の値を使います。

       シェルは、終了コード  0 で終了したコマンドは正常終了したとみなします。 終了コード 0 は成功
       を示します。 0 以外の終了コードは失敗を示します。 あるコマンドが致命的なシグナル N  で終了
       したときには、 bash は「128+N」の値を終了ステータスに使います。

       コマンドが見つからなかった場合には、 そのコマンドを実行するために生成された子プロセスが ス
       テータス 127 を返します。 コマンドが見つかったけれど実行できなかった場合には、  ステータス
       は 126 です。

       展開やリダイレクションの際にエラーが発生し コマンドが失敗した場合には、 0 より大きい終了ス
       テータスが返されます。

       シェルの組み込みコマンドは、 成功した場合にはステータス 0 () を返し、 実行中にエラーが起
       こった場合には 0 でない値 () を返します。 組み込みコマンドは全て、正しくない使い方である
       ことを示すのに 終了ステータス 2 を返します。

       bash 自身が返す終了ステータスは、文法エラーが起きた場合を除き、 実行した最後のコマンドの終
       了ステータスです。  文法エラーの場合には 0 でない値が終了ステータスとなります。 後述の組み
       込みコマンド exit も参照してください。

シグナル

       bash が対話的であり、トラップが全くないとき、bashSIGTERM を無視し (したがって  kill  0
       では対話シェルは  kill されません)、 SIGINT を捕捉し処理します (したがって組み込みコマンド
       wait は割り込み可能です)。 どんな場合でも、bashSIGQUIT を無視します。 ジョブ制御が有効
       な状態ならば、 bashSIGTTIN, SIGTTOU, SIGTSTP を無視します。

       bash が起動した外部コマンドは、 シェルが自分の親から継承した値をシグナルハンドラに設定しま
       す。  ジョブ制御が有効でないときには、非同期コマンドは、  継承したシグナルハンドラに加えて
       SIGINTSIGQUIT も無視します。 コマンド置換の結果として実行されたコマンドは、 キーボード
       で生成されたジョブ制御シグナルを無視します。   無視されるシグナルは   SIGTTIN,    SIGTTOU,
       SIGTSTP です。

       デフォルトでは、シェルは  SIGHUP を受け取ると終了します。 終了する前には、シェルは実行中・
       停止中の全てのジョブに対して  SIGHUP  を再送信します。停止中のジョブには  SIGCONT   が送ら
       れ、このジョブが  SIGHUP を受け取るようにします。 特定のジョブに対してシェルからシグナルが
       送られないようにするためには、 組み込みコマンド disown (後述の シェルの組み込みコマンド を
       参照)  を使って、そのジョブをジョブテーブルから削除するか、あるいは  disown  -h を使って、
       SIGHUP を受け取らないようにマークを付けます。

       シェルオプションの huponexitshopt を使って設定されていた場合、対話的なログインシェルが
       終了するときに、 bashSIGHUP を全てのジョブに送ります。

       コマンドの完了を待っている間に、トラップが設定されたシグナルを  bash が受け取ったとき、 そ
       のトラップはコマンドが完了するまで実行されません。 bash が組み込みコマンドの wait を使って
       非同期コマンドを待っているときに、 トラップが設定されているシグナルを受け取ると、 組み込み
       コマンド wait は即座に復帰させられます。 この際の終了ステータスは 128 より大きい値になりま
       す。 また復帰するのはトラップが実行された直後です。

ジョブ制御

       ジョブ制御 (job control) とは、プロセスの実行を選択的に停止 (サスペンド/suspend) させ、 後
       で実行を再開させる (リジューム/resume) 機能のことです。 ユーザは通常、対話的インタフェース
       を通してこの機能を利用します。  対話的インタフェースは、オペレーティングシステムのカーネル
       の端末ドライバと bash の組み合わせで提供されます。

       シェルはパイプラインごとに ジョブ(job)  を構成します。シェルは現在実行中のジョブのテーブル
       を保存しています。  このテーブルは jobs コマンドを使ってリスト表示できます。 bash がジョブ
       を非同期的に (バックグラウンド で) 起動したときには、 bash は以下のような行を出力します:

              [1] 25647

       これは、このジョブのジョブ番号は 1 であり、 このジョブを構成するパイプライン中の最後のプロ
       セスの ID が 25647 であることを示しています。 1 つのパイプラインに含まれる全てのプロセスは
       同じジョブのメンバです。 bash は、ジョブ制御の基礎として  ジョブ  という抽象化機構を使いま
       す。

       ジョブ制御のためのユーザインタフェースの実装を容易にするために  オペレーティングシステムは
       現在の端末プロセスのグループ ID (current terminal process group ID) という情報を管理してい
       ます。 このプロセスグループのメンバ (プロセスグループ ID が現在の端末プロセスのグループ ID
       と等しいプロセス) は、 SIGINT のような、キーボードで生成されたシグナルを受け取ります。  こ
       のようなプロセスは  フォアグラウンド  (foreground)  にあると言われます。  バックグラウンド
       (background) プロセスは、 プロセスのグループ ID が端末のグループ ID と異なるプロセスです。
       このようなプロセスは、キーボードで生成したシグナルの影響を受けません。  フォアグラウンドプ
       ロセスだけが端末からの読み込みが許され、 stty tostop  で許可されている場合には出力も許され
       ます。  バックグラウンドプロセスが端末からの読み込み (stty tostop が有効なときには端末への
       書き込みも)  を行おうとすると、 このプロセスには端末ドライバから SIGTTIN (SIGTTOU)  シグナ
       ルが送られます。 このシグナルを捕捉しなければ、プロセスは停止します。

       bash が動作しているオペレーティングシステムがジョブ制御をサポートしているならば、 ユーザは
       bash  を使ってジョブ制御を行えます。  プロセスの動作中に  サスペンド  文字   (通常は   ^Z,
       Control-Z) を打ち込むと、そのプロセスは停止させられ、 bash に制御が戻ります。 遅延サスペン
        (delayed suspend) 文字 (通常は ^Y, Control-Y) を打ち込むと、 そのプロセスは端末から入力
       を読み込もうとしたときに停止させられ、 制御が bash に戻ります。 この時点でユーザはこのジョ
       ブの状態を操作できます。 利用できるのは、バックグラウンドで実行を継続するならば bg  コマン
       ド、フォアグラウンドで実行を継続するならば fg コマンド、プロセスを kill するなら kill コマ
       ンドです。^Z の効果は即座に現われるので、 未出力の出力や先行入力した文字が破棄されるという
       副作用があります。

       シェル上でジョブを参照する方法はいろいろあります。  文字 % はジョブ名 (jobspec) の始まりを
       示します。 ジョブ番号 n%n として参照できます。 ジョブの参照には、 ジョブを起動するとき
       に使った名前の先頭部分や  コマンドライン中に現われる部分文字列を使うこともできます。  例え
       ば、 %ce は停止中のジョブ ce  を指します。  先頭の部分がマッチするジョブが複数個ある場合に
       は、 bash はエラーを報告します。一方、 %?ce を用いると、文字列 ce をコマンドライン中に含む
       任意のジョブを参照できます。 部分文字列がマッチするジョブが複数個ある場合には、 bash  はエ
       ラーを報告します。  シンボル  %%  および %+ は、シェルが覚えている カレントジョブ (current
       job) を指します。これは、フォアグラウンドで起動されているときに停止されたか、 バックグラウ
       ンドで起動された最後のジョブです。  前のジョブ (previous job)%- を使って参照できます。
       ジョブが一つしかない場合には、%+%- のどちらも使っても そのジョブを参照することができま
       す。 ジョブに関する出力 ( jobs コマンドの出力など) では、カレントジョブには必ず + というフ
       ラグが付き、前のジョブには - というフラグが付きます。 ジョブ名が付いていない単独の %  もカ
       レントジョブを示します。

       ジョブの名前だけを指定すると、  そのジョブをフォアグラウンドに持ってきます。つまり、 %1“fg %1” と同義であり、 ジョブ 1 をバックグラウンドからフォアグラウンドに持ってきます。  同
       様に  “%1  &” はジョブ 1 をバックグラウンドで実行再開させます。これは “bg %1” と同じ意味で
       す。

       ジョブの状態が変わると、シェルはそれを即座に知ります。 通常、 bash  がジョブの状態変化を報
       告するのは、プロンプトを出力する直前です。 これは他の出力を妨害しないためです。 組み込みコ
       マンド set-b オプションが指定されていると、 bash  はジョブの状態の変化を即座に報告しま
       す。 子プロセスが終了するたびに SIGCHLD のトラップが実行されます。

       ジョブを停止させたままで (checkjobs シェルオプションが 組み込みコマンド shopt により有効に
       なっているときには実行中でも) bash を終了 (exit)  させようとすると、シェルは警告メッセージ
       を出力します。 checkjobs オプションが有効のときには、ジョブとその状態を一覧表示します。 こ
       のようなときには、 jobs コマンドを使ってジョブの状態を調べられます。  間にコマンドを挟まず
       に bash を再び終了させようとすると、 シェルは警告を繰り返さないで、 停止中のジョブを終了さ
       せます。

プロンプト

       対話的に動作している場合、 bash はコマンドを読む込み準備ができたときにプライマリプロンプト
       PS1 を表示し、コマンドを完成させるためにまだ入力が必要なときに セカンダリプロンプト PS2 を
       表示します。 bash ではこれらのプロンプト文字列をカスタマイズできます。  この際にはバックス
       ラッシュでエスケープされた 各種特殊文字を挿入でき、 これは以下のようにデコードされます:
              \a     ASCII のベル文字 (07)
              \d     "曜日 月 日" という形式の日付 (例: "Tue May 26")
              \D{format}
                     formatstrftime(3) に渡され、 その結果がプロンプト文字列に挿入されます。
                     format が空の場合には (ブレースは必要)、  ロケールで指定された時刻表記になり
                     ます。
              \e     ASCII のエスケープ文字 (033)
              \h     ホスト名のうち最初の `.' までの部分
              \H     ホスト名
              \j     シェルによって現在管理されているジョブの数
              \l     シェルの端末デバイスのベース名 (basename)
              \n     改行 (newline)
              \r     復帰 (carriage return)
              \s     シェルの名前。つまり $0 のベース名 (最後のスラッシュ以降の部分)
              \t     24 時間制の HH:MM:SS 形式の現在の時刻
              \T     12 時間制の HH:MM:SS 形式の現在の時刻
              \@     12 時間制の am/pm 形式の現在の時刻
              \A     12 時間制の HH:MM 形式の現在の時刻
              \u     現在のユーザのユーザ名
              \v     bash のバージョン (例: 2.00)
              \V     bash のリリース。バージョンにパッチレベルを加えたもの (例 : 2.00.0)
              \w     現在の作業ディレクトリ。 $HOME の部分はチルダに短縮されます。 PROMPT_DIRTRIM
                     の値が適用されます。
              \W     現在の作業ディレクトリのベース名 $HOME の部分はチルダに短縮されます。
              \!     このコマンドの履歴番号
              \#     このコマンドのコマンド番号
              \$     実効 UID が 0 の場合に #、 それ以外の場合は $
              \nnn   8進数 nnn に対応する文字
              \\     バックスラッシュ
              \[     非表示文字のシーケンスの開始。  これを使うと、プロンプト中に端末の制御シーケ
                     ンスを埋め込むことができます。
              \]     非表示文字のシーケンスを終了します。

       コマンド番号と履歴番号は異なるのが普通です:   コマンドの履歴番号とは履歴リスト内での位置で
       す。 履歴リストは履歴ファイルから読み込めます (後述の  履歴  を参照)。  一方、コマンド番号
       は、 現在のシェルのセッション中に実行された一連のコマンドの列における位置です。 この文字列
       がデコードされた後、さらにパラメータ展開、コマンド置換、  算術式展開、クォート削除が適用さ
       れます。展開はシェルオプション   promptvars  (後述の  シェルの組み込みコマンド  の項にある
       shopt コマンドの説明を参照) の値に基づいて行われます。

READLINE ライブラリ

       readline は対話シェルを使うときに入力の読み込みを処理するライブラリです。 ただし、シェルの
       起動時に --noediting オプションが指定された場合には使われません。 行編集は組み込みコマンド
       read-e オプションを 指定したときにも使われます。  デフォルトでは、行編集に使うコマンド
       は emacs のコマンドに似ています。 vi 形式の行編集インタフェースも使えます。 行編集は、組み
       込みコマンド set (後述の シェルの組み込みコマンド を参照) に -o emacs-o vi  オプション
       を指定することで、いつでも有効にできます。    シェルを起動した後に行編集機能を無効にするに
       は、組み込みコマンド set に対して +o emacs オプションまたは +o vi オプションを設定してくだ
       さい。

   Readline の記法
       このセクションでは、emacs  形式の記法を使ってキーストロークを表します。 コントロールキーは
       C-key で表します (例: C-n は Control-N  の意味です)。同様に  メタ  キーは  M-key  で表すの
       で、M-x は Meta-X を表すことになります。 (メタ キーがないキーボードでは、M-x は ESC x を表
       します。つまり、 エスケープキーを押した後に x キーを押します。これは ESC を メタプレフィッ
       クス (meta prefix) にする操作です。 M-C-x の組み合わせは、ESC-Control-x つまり、エスケープ
       キーを押した後に、コントロールキーを押したまま x を押すことを意味します。)

       Readline のコマンドには数値の 引き数  を指定できます。通常これは繰り返しの回数として作用し
       ます。 ただし、場合によっては、引き数の符号が意味を持つこともあります。 順方向に作用するコ
       マンド (例: kill-line) に負の引き数を渡すと、 コマンドは逆方向に作用します。  引き数を指定
       した場合の動作がこの説明と異なるコマンドについては後で説明します。

       コマンドがテキストをキル (kill) すると説明されているときは、 削除されたテキストは、 後で取
       り出せる  (ヤンク  (yank)  できる)  ように保存されます。  キルされたテキストは、キルリング
       (kill ring) に保存されます。 連続してキルを行うと、テキストは 1 つのまとまりとして保存され
       るので、 全部を一度にヤンクできます。テキストをキルしないコマンドが挟まると、 キルリング上
       のテキストが分離されます。

   Readline の初期化
       readline  をカスタマイズするには、  コマンドを初期化ファイル (inputrc ファイル) に追加しま
       す。 このファイルの名前は、変数 INPUTRC の値から決まります。  この変数が設定されていない場
       合のデフォルト値は ~/.inputrc です。 readline ライブラリを使うプログラムが起動する際には、
       この初期化ファイルが読み込まれ、キー割り当てと変数が設定されます。 readline の初期化ファイ
       ル中で使用できる基本的構文は、  以下のように少ししかありません。 空行は無視されます。 # で
       始まる行はコメントです。 $ で始まる行は条件文です。 それ以外の行はキー割り当てと変数の設定
       です。

       デフォルトのキー割り当ては inputrc ファイルで変更できます。 このライブラリを使う他のプログ
       ラムからも、 独自のコマンドとキー割り当てを追加できます。

       例えば、

              M-Control-u: universal-argument
       または
              C-Meta-u: universal-argument
       を inputrc ファイルに書くと、M-C-u で readline の universal-argument  コマンドが実行される
       ようになります。

       以下に示すシンボル名を使うことができます:  RUBOUT,  DEL,  ESC,  LFD, NEWLINE, RET, RETURN,
       SPC, SPACE, TAB。

       readline では、キーにはコマンド名だけでなく文字列を割り当てることもでき、 その場合には、そ
       のキーが押されると割り当てられた文字列が挿入されます (マクロ)。

   Readline のキー割り当て
       inputrc  ファイルにおける制御キーの割り当て方は単純です。 必要なものは、コマンド名あるいは
       マクロの文字列と、 これらが割り当てられるキーシーケンスだけです。 名前は 2  通りの方法で指
       定できます。  つまり、シンボリックなキーの名前 (たいていは、Meta-Control- プレフィック
       スと組み合わせて使われる) による指定と、 キーシーケンスによる指定です。

       「keyname:function-name」あるいは 「keyname:macro」の形式を使うときには、 keyname は英語で
       書き下したキーの名前となります。例を以下に示します:

              Control-u: universal-argument
              Meta-Rubout: backward-kill-word
              Control-o: "> output"

       この例では、  C-uuniversal-argument に、 M-DELbackward-kill-word に割り当てられま
       す。 また、 C-o はマクロの実行に割り当てられ、右辺値に展開されます  (つまり、テキスト  ``>
       output'' が編集行に挿入されます)。

       後者の形式である「"keyseq":function-name」または  「"keyseq":macro」においては、 keyseq は
       先程の keyname とは異なり、 ダブルクォートで括ってキーシーケンス全体を示す文字列を表記して
       います。 以下の例で示すように、GNU Emacs 形式のキーエスケープの一部を使えます。 ただしシン
       ボリックな文字名は認識されません。

              "\C-u": universal-argument
              "\C-x\C-r": re-read-init-file
              "\e[11~": "Function Key 1"

       この例でも、  C-uuniversal-argument   機能に割り当てられています。   C-x   C-rre-read-init-file  機能に割り当てられ、 ESC [ 1 1 ~ は ``Function Key 1'' という文字列の挿
       入に割り当てられています。

       GNU Emacs 形式のエスケープシーケンスを以下に全て示します:
              \C-    コントロールプレフィックス
              \M-    メタプレフィックス
              \e     エスケープ文字
              \\     バックスラッシュ
              \"     " という文字
              \'     ' という文字

       GNU Emacs 形式のエスケープシーケンスに加えて、  別形式のバックスラッシュエスケープも使えま
       す:
              \a     警告 (ベル)
              \b     バックスペース
              \d     削除 (delete)
              \f     フォームフィード
              \n     改行 (newline)
              \r     復帰 (carriage return)
              \t     水平タブ
              \v     垂直タブ
              \nnn   8 進値が nnn である 8 ビット文字 (1 文字につき数字 1〜3 桁)
              \xHH   16 進値が HH である 8 ビット文字 (16 進で 1〜2 桁)。

       マクロのテキストを入力する際には、マクロ定義を示すために  シングルクォートやダブルクォート
       を使わなければなりません。 クォートされていないテキストは関数名とみなされます。 マクロ本体
       では、前述のバックスラッシュによるエスケープは展開されます。  バックスラッシュはマクロのテ
       キスト内の他の文字を全てエスケープします。 これには " や ' も含まれます。

       bash では、組み込みコマンドの bind を使って、readline の現在の  キー割り当ての表示と変更を
       行えます。 また、組み込みコマンド set に対して -o オプションを使えば、編集モードを対話的利
       用の途中に切り替え可能です (後述の シェルの組み込みコマンド を参照)。

   Readline の変数
       Readline には、動作を細かくカスタマイズするために変数があります。 変数は inputrc  ファイル
       中に

              set variable-name value

       という形式の文で設定できます。  特に断らない限り、readline の変数がとる値は OnOff のい
       ずれかです。大文字と小文字の違いは考慮しません。 認識できない変数名は無視されます。 変数の
       値を読み取るとき、設定されてない場合や、空文字列、"on"   (大文字と小文字は区別しない)、"1"
       は On とみなされます。それ以外の値は Off とみなされます。 変数とそのデフォルト値を以下に示
       します:

       bell-style (audible)
              readline が端末のベルを鳴らそうとしたときの動作を制御します。 none が設定されている
              場合は、readline はベルを鳴らしません。 visible  が設定されている場合には、可能であ
              れば可視ベル   (visible  bell)  が用いられます。audible  が設定されている場合には、
              readline は端末のベルを鳴らそうとします。
       bind-tty-special-chars (On)
              On が設定されていると、  カーネルの端末ドライバによって特別扱いされるコントロール文
              字の機能の代わりに readline の同等の機能を割り当てようとします。
       comment-begin (“#”)
              readline  の insert-comment コマンドが実行されたときに挿入される文字列です。 このコ
              マンドは emacs モードでは M-# に割り当てられ、vi コマンドモードでは #  に割り当てら
              れます。
       completion-ignore-case (Off)
              On  が設定されていると、 readline がファイル名のマッチングと補完を行う際に 大文字と
              小文字が区別されません。
       completion-prefix-display-length (0)
              補完候補のリストでそのまま表示される共通先頭部分の文字数。 0 より大きい値が設定され
              ると、補完候補を表示するときに、 この値より長い共通先頭部分は省略記号で置き換えられ
              ます
       completion-query-items (100)
              possible-completions コマンドが生成した補完候補の数が、  いくつを越えると表示の可否
              をユーザに問い合わせるのかを決めます。  この変数には 0 以上の任意の整数を設定できま
              す。 補完の候補数がこの変数の値以上の場合には、  ユーザに対して候補を表示するかどう
              かの問い合わせがなされます。 そうでない場合には、単に端末に補完の候補がリスト表示さ
              れます。
       convert-meta (On)
              On を設定すると、readline は 8  番目のビットがセットされている文字を  ASCII  のキー
              シーケンスに変換します。  変換は、8 番目のビットを落として、 エスケープ文字を前に追
              加することによって行います  (実際にはエスケープ文字をメタプレフィックスとして用いま
              す)。
       disable-completion (Off)
              On を設定すると、readline は単語の補完を行わなくなります。 補完される文字の編集行へ
              の挿入は、 その文字を self-insert に割り当てたかのように行われます。
       editing-mode (emacs)
              readline の起動時に emacsvi  のどちらに似たキー割り当てを使うのかを制御します。
              editing-mode には emacsvi のいずれかを指定できます。
       echo-control-characters (On)
              On  が設定されていると、サポートしている OS では、 キーボード操作でシグナルが起こさ
              れたときに相当する文字を画面に出力します。
       enable-keypad (Off)
              On を設定すると、 readline は呼び出されたときにアプリケーションキーパッドを有効にし
              ようとします。 一部のシステムでは、矢印キーを使うためにこれを有効にする必要がありま
              す。
       enable-meta-key (On)
              On が設定されていると、 readline は端末がサポートを要求するメタ修飾キーを有効にしよ
              うとします。 多くの端末では、メタキーは 8 ビット文字を送信するのに使われます。
       expand-tilde (Off)
              On を設定すると、 readline が単語の補完を試みるときにチルダ展開が行われます。
       history-preserve-point (Off)
              On  が設定されていると、  previous-historynext-history で履歴行を取り出したとき
              に、 ポイントを行内の同じ位置に置こうとします。
       history-size (0)
              履歴リストに保存する履歴エントリの最大数を設定する。 0 が設定されていると、履歴リス
              トのエントリの数は制限されません。
       horizontal-scroll-mode (Off)
              On  が設定されていると、readline は表示の際に 1 行しか 使わないようになります。つま
              り、行がスクリーンの幅より長くなると、 新しい行に折り返すのではなく、1 つの入力行の
              中で横にスクロールします。
       input-meta (Off)
              On が設定されていると、readline は 8 ビットの入力が可能になりま す(つまり、読み込ん
              だ文字の再上位ビットを落としません)。この動作は、端  末のサポートとは無関係に行われ
              ます。 meta-flag という名前は、この変数の別名です。
       isearch-terminators (“C-[C-J”)
              インクリメンタル検索を終了させる文字からなる文字列です  (終了後にその文字がコマンド
              として実行されることもありません)。 この変数に値が設定されていなければ、 ESCC-J
              でインクリメンタル検索が終わります。
       keymap (emacs)
              現在の    readline    のキーマップを設定します。    有効なキーマップ名は、   emacs,
              emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command, .IR vi-insert  です。vivi-command  と等価で、emacsemacs-standard と等価です。 デフォルト値は emacs で
              す。 editing-mode の値もデフォルトキーマップに影響を与えます。
       mark-directories (On)
              On が設定されていると、 補完されたディレクトリ名の末尾にスラッシュが追加されます。
       mark-modified-lines (Off)
              On が設定されていると、履歴行を表示する際に、  以前に変更されたものの先頭にアスタリ
              スク (*) を付けて表示します。
       mark-symlinked-directories (Off)
              On    が設定されていると、   ディレクトリへのシンボリックリンクが補完されたときに、
              (mark-directories が有効であれば) 名前の末尾にスラッシュが追加されます。
       match-hidden-files (On)
              On が設定されていると、 ファイル名の補完で `.'  で始まる名前のファイル  (隠しファイ
              ル)  にもマッチします。  Off が設定されているときには、`.' で始まる名前のファイルを
              補完するには先頭の `.' をユーザが入力する必要があります。
       menu-complete-display-prefix (Off)
              On が設定されていると、 メニュー補完 (menu completion) で補完候補のリスト (空の場合
              も含む) を順番に表示する前に、共通先頭部分を表示します。
       output-meta (Off)
              On  が設定されていると、  readline  は 8 番目のビットが立っている文字を直接表示しま
              す。 メタ文字を前置したエスケープシーケンスでの表示は行いません。
       page-completions (On)
              On が設定されていると、 一度に一画面分の補完候補を表示するために readline  は組み込
              みの more 風ページャを使います。
       print-completions-horizontally (Off)
              On  が設定されていると、  readline は補完でマッチするものをアルファベット順にして、
              縦方向ではなく横方向に並べて表示します。
       revert-all-at-newline (Off)
              On が設定されていると、 accept-line が実行されて readline から戻るときに、 履歴に加
              えられた全ての変更を元に戻します。 デフォルトでは、readline の各呼び出しを通じて 履
              歴行が変更され単一のアンドゥリストが保持されます。
       show-all-if-ambiguous (Off)
              これは補完機能のデフォルトの挙動を変えます。 On  が設定されている場合、単語に対する
              補完候補が複数個あると、 ベルは鳴らされずに、マッチするものが即座にリスト表示されま
              す。
       show-all-if-unmodified (Off)
              これは show-all-if-ambiguous と同様に 補完機能のデフォルトの挙動を変えます。 On  が
              設定されている場合、単語に対する補完候補が複数個あって、 部分的な補完ができない (補
              完候補が共通先頭部分を持たない) と、 マッチするものが即座にリスト表示されます。  ベ
              ルは鳴らされません。
       skip-completed-text (Off)
              On  が設定されていると、 これは補完機能がマッチしたものを行に挿入するときのデフォル
              トの挙動を変えます。  単語の途中で補完を実行したときにだけ意味があります。   有効に
              なっていると、readline  は、単語のカーソル以後の部分が重複しないように、 補完された
              単語のうちポイント以後の文字を挿入しません。
       visible-stats (Off)
              On が設定されていると、 stat(2) で得られるファイルの種類を表す文字が、 補完候補のリ
              スト表示の際に追加されます。

   Readline の条件構文
       Readline  には、 C 言語のプリプロセッサの条件付きコンパイル機能と 似たコンセプトに基づく機
       能が実装されています。  これを使うと、条件に応じてキー割り当てや変数の設定を実行できます。
       パーザディレクティブは 4 つあります。

       $if    $if  構文を使うと、編集モードや使用中の端末、 readline を使っているアプリケーション
              に応じた割り当てを行えます。 行末までの全テキストが評価対象となります。  これを分離
              するには文字は必要ありません。

              mode   $if ディレクティブの mode= 形式は、 readline が emacs モードか vi モードのど
                     ちらになっているかを調べるために使います。 例えば、これを set keymap  コマン
                     ドと一緒に使い、 readline が emacs モードで始まったときだけ キーの割り当てを
                     emacs-standardemacs-ctlx キーマップに設定できます。

              term   term= 形式を使うと、 端末固有のキー割り当てを入れることができます。 これは端
                     末のファンクションキーが出力する  キーシーケンスを割り当てる場合などに使えま
                     す。 = の右辺の単語の評価は、 端末の完全な名前および最初の -  の前までの部分
                     的な名前の両方に対して行われます。  例えば、  sunsunsun-cmd の両方に
                     マッチします。

              application
                     application はアプリケーション固有の設定を入れるために使います。 readline ラ
                     イブラリを使っているプログラムはそれぞれ   アプリケーション名   (application
                     name)  を設定するので、   初期化ファイルはそれが特定の値かどうかを調べられま
                     す。 これを使って、特定のプログラム用で便利な機能に キーシーケンスを割り当て
                     できます。例えば、以下のコマンドは、 bash の場合に、現在の単語または直前の単
                     語をクォートする キーシーケンスを追加します。

                     $if Bash
                     # Quote the current or previous word
                     "\C-xq": "\eb\"\ef\""
                     $endif

       $endif このコマンドは $if コマンドを終了させます (上記の例の通り)。

       $else  $if ディレクティブのこの分岐内に書かれたコマンドは、 評価が失敗したときに実行されま
              す。

       $include
              このディレクティブはファイル名 1 つを引き数に取り、  そのファイルからコマンドとキー
              割り当てを読み込みます。 例えば以下のディレクティブを使うと /etc/inputrc が読み込ま
              れます:

              $include  /etc/inputrc

   検索
       readline  には、指定した文字列を含む行をコマンド履歴内から探すコマンド  が用意されています
       (後述の 履歴 を参照)。 検索のモードには、 インクリメンタル (incremental) モードと 非インク
       リメンタル (non-incremental) モードの 2 つがあります。

       インクリメンタル検索では、    ユーザが検索文字列全体の入力が終わるより前に検索が開始されま
       す。  検索文字列に文字が追加されるたびに、 readline はそれまでに入力した文字列にマッチする
       履歴から 次のエントリを表示します。 インクリメンタル検索では、探している履歴エントリを見つ
       けるために 必要な数の文字を入力すれば十分です。 isearch-terminators の値に含まれる文字を入
       力すると、 インクリメンタル検索は終了します。 この変数に値が代入されていない場合には、エス
       ケープ文字または Control-J でインクリメンタル検索が終了します。 Control-G はインクリメンタ
       ル検索を異常終了させ、元の行を復元します。  検索が終了すると、検索文字列を含む履歴エントリ
       が現在の行になります。

       マッチした他の履歴リストのエントリを見つけるには、Control-S  または Control-R を適宜入力し
       ます。これにより、 今まで入力した検索文字列にマッチする次のエントリを 履歴の前方または後方
       に向かって探します。 readline に割り当てられた他のキーシーケンスを入力すると検索が終わり、
       入力したキーシーケンスに対応するコマンドが実行されます。      例えば、改行は検索を終了させ
       て、その行を入力します。 これにより、履歴リスト中のコマンドが実行されます。

       readline  は前回のインクリメンタル検索で入力された 検索文字列を覚えています。 新しい検索文
       字を間に挟まずに Control-R を 2 回入力すると、 覚えている検索文字列が使われます。

       インクリメンタルでない検索の場合には、検索文字列全体を読み込んでから、  履歴行にマッチする
       ものの検索を始めます。  検索文字列には、ユーザが入力したものか、現在の行の内容の一部が使え
       ます。

   Readline のコマンド名
       以下は、 コマンドの名前およびそれらが割り当てられている デフォルトのキーシーケンスの一覧で
       す。 対応するキーシーケンスがないコマンド名には、 デフォルトではキーは割り当てられていませ
       ん。 以下の説明では、ポイント  (point)  は現在のカーソルの位置を表し、  マーク  (mark)set-mark コマンドによって保存されたカーソル位置を表します。 ポイントとマークの間のテキスト
       は、リージョン (region) と呼びます。

   移動コマンド
       beginning-of-line (C-a)
              現在の行の先頭に移動します。
       end-of-line (C-e)
              行の末尾に移動します。
       forward-char (C-f)
              1 文字進みます。
       backward-char (C-b)
              1 文字戻ります。
       forward-word (M-f)
              次の単語の最後に進みます。単語は英数字 (英字と数字) からなります。
       backward-word (M-b)
              現在あるいは直前の単語の先頭に戻ります。 単語は英数字 (英字と数字) からなります。
       shell-forward-word
              次の単語の最後に進みます。   単語はクォートされていないシェルのメタ文字で区切られま
              す。
       shell-backward-word
              現在の単語あるいは前の単語の先頭に戻ります。 単語はクォートされていないシェルのメタ
              文字で区切られます。
       clear-screen (C-l)
              現在の行を画面の一番上の行に残したまま、画面をクリアします。 引き数を付けると、画面
              をクリアせずに現在の行を再描画します。
       redraw-current-line
              現在の行を再描画します。

   履歴操作のためのコマンド
       accept-line (Newline, Return)
              カーソルの位置に関わらず、行を確定します。この行が空でなければ、変数 HISTCONTROL の
              状態に従って、これが履歴リストに追加されます。     行が履歴リストを変更したものなら
              ば、履歴行は元の状態に戻されます。
       previous-history (C-p)
              履歴リストを戻り、履歴リストから前の行を取り出します。
       next-history (C-n)
              履歴リストを進み、履歴リストから次の行を取り出します。
       beginning-of-history (M-<)
              履歴の最初の行に移動します。
       end-of-history (M->)
              入力履歴の最後に移動します。つまり、現在入力中の行に移動します。
       reverse-search-history (C-r)
              現在の行を開始点にして後方に向かって検索を行い、 必要に応じて履歴を「遡って」いきま
              す。これはインクリメンタル検索です。
       forward-search-history (C-s)
              現在の行を開始点にして前方に向かって検索を行い、 必要に応じて履歴を「下って」いきま
              す。これはインクリメンタル検索です。
       non-incremental-reverse-search-history (M-p)
              現在の行を開始点にして、履歴リストを後方に向かって検索を行います。 ユーザが入力した
              文字列を非インクリメンタルモードで検索します。
       non-incremental-forward-search-history (M-n)
              現在の行を開始点にして、履歴リストを前方に向かって検索を行います。 ユーザが入力した
              文字列を非インクリメンタルモードで検索します。
       history-search-forward
              履歴を前方に向かって検索し、  現在の行の先頭とポイントの間の文字列を探します。 これ
              は非インクリメンタル検索です。
       history-search-backward
              履歴を後方に向かって検索し、   現在の行の先頭およびポイントの間の文字列を探します。
              これは非インクリメンタル検索です。
       yank-nth-arg (M-C-y)
              前のコマンドに対する最初の引き数  (通常は前の行の 2 番目の単語)  をポイントに挿入し
              ます。引き数 n が付いていると、前のコマンドの n 番目の単語 (前のコマンドの単語は  0
              から数えます)。  引き数が負ならば、前のコマンドの最後から  n 番目の単語が挿入されま
              す。 引き数 n が一度決まると、コマンドの引き数が履歴の展開での "!n"  の指定のように
              展開されます。
       yank-last-arg (M-., M-_)
              前のコマンドの最後の引き数 (一つ前の履歴エントリの最後の単語) を挿入します。 引き数
              があると、yank-nth-arg と全く同じように動作します。 yank-last-arg  を繰り返して呼び
              出すと、  履歴リストを遡って参照が行われ、 それぞれの行の最後の引き数が順番に挿入さ
              れます。 繰り返して呼び出すときの引き数は、履歴の中を動く方向を決めます。  負の引き
              数は、履歴の中を動く方向 (後方または前方) を反転します。 履歴の展開での "!$" の指定
              のように、 最後の引き数の展開に履歴の展開の機能が使われます。
       shell-expand-line (M-C-e)
              シェルが行うのと同じように行の展開を行います。 エイリアスや履歴の展開を含め、シェル
              の行う全ての単語展開が行われます。 履歴の展開の説明については、後述の 履歴の展開 を
              参照してください。
       history-expand-line (M-^)
              現在の行で履歴の展開を行います。 履歴の展開の説明については、後述の 履歴の展開 を参
              照してください。
       magic-space
              現在の行で履歴の展開を行い、空白を挿入します。   履歴の展開の説明については、後述の
              履歴の展開 を参照してください。
       alias-expand-line
              現在の行でエイリアスの展開を行います。 エイリアスの展開の説明については、前述の  
              イリアス を参照してください。
       history-and-alias-expand-line
              現在の行で履歴とエイリアスの展開を行います。
       insert-last-argument (M-., M-_)
              yank-last-arg と同じものです。
       operate-and-get-next (C-o)
              現在の行を実行し、  履歴内の現在の行の次の行を編集用に取得します。 引き数は全て無視
              されます。
       edit-and-execute-command (C-xC-e)
              エディタを起動して現在のコマンドラインの内容を開き、 その結果をシェルのコマンドとし
              て実行します。 bash はエディタとして $VISUAL, $EDITOR, emacs の順で起動を試みます。

   テキスト編集のためのコマンド
       delete-char (C-d)
              ポイントの文字を削除します。  ポイントが行の先頭であり、その行に文字がなく、 さらに
              打ち込んだ最後の文字が delete-char に割り当てられていなければ、 EOF が返されます。
       backward-delete-char (Rubout)
              カーソルの前の文字を削除します。数値の引き数を与えると、 削除したテキストをキルリン
              グに保存します。
       forward-backward-delete-char
              カーソルが行末になければカーソルがある位置の文字を削除します。 カーソルが行末にある
              場合には、カーソルの前の文字を削除します。
       quoted-insert (C-q, C-v)
              次に打ち込んだ文字をそのまま行に追加します。 これは C-q  等の文字を挿入するために使
              います。
       tab-insert (C-v TAB)
              タブ文字を挿入します。
       self-insert (a, b, A, 1, !, ...)
              打ち込んだ文字を挿入します。
       transpose-chars (C-t)
              ポイントの前にある文字を動かし、  現在ポイントがある文字の後ろに持っていきます。 同
              時にポイントも前に進みます。ポイントが行の最後にある場合は、 ポイントの前の 2  文字
              が交換されます。 負の引き数を指定すると、何も起こりません。
       transpose-words (M-t)
              ポイントの前にある単語を動かし、   ポイントの後ろにある単語の後ろに持っていきます。
              この際には、ポイントも始めに前にあった単語の後ろまで移動します。 ポイントが行の最後
              にある場合は、行の最後の 2 単語が交換されます。
       upcase-word (M-u)
              現在の (または後ろの) 単語を大文字にします。 負の引き数を指定すると、前の単語を大文
              字にしますが、 ポイントは動きません。
       downcase-word (M-l)
              現在の (または後ろの) 単語を小文字にします。 負の引き数を指定すると、前の単語を小文
              字にしますが、 ポイントは動きません。
       capitalize-word (M-c)
              現在の  (または後ろの)  単語をキャピタライズします  (単語の先頭の文字を大文字にしま
              す)。  負の引き数を指定すると前の単語をキャピタライズしますが、  ポイントは動きませ
              ん。
       overwrite-mode
              上書きモードをトグルさせます。   正の引き数を指定すると上書きモードに切り替えます。
              負の引き数を指定すると挿入モードに切り替えます。 このコマンドは emacs  モードでのみ
              有効です。  vi  モードでは違った形で上書きします。  readline() を呼び出したときは毎
              回、挿入モードで始まります。 上書きモードでは、self-insert が割り当てられた文字は、
              ポイントの位置のテキストを右に押し出すのではなく置き換えます。 backward-delete-char
              が割り当てられた文字は、 ポイントの前の文字をスペースで置き換えます。  このコマンド
              はデフォルトではキーに割り当てられていません。

   キルとヤンク
       kill-line (C-k)
              ポイントから行末までのテキストをキルします。
       backward-kill-line (C-x Rubout)
              現在のカーソル位置から行頭までをキルします。
       unix-line-discard (C-u)
              ポイントから行頭までをキルします。  キルされたテキストはキルリング (kill-ring) に入
              ります。
       kill-whole-line
              現在の行の文字を全てキルします。ポイントの位置は関係ありません。
       kill-word (M-d)
              ポイントから現在の単語の終わりまでをキルします。     ポイントが単語と単語の間であれ
              ば、後ろの単語の終わりまでをキルします。 単語の境界は forward-word で使われているも
              のと同じです。
       backward-kill-word (M-Rubout)
              ポイントの前にある単語をキルします。 単語の境界は backward-word  で使われているもの
              と同じです。
       shell-kill-word (M-d)
              ポイントから現在の単語の終わりまでをキルします。     ポイントが単語と単語の間であれ
              ば、後ろの単語の終わりまでをキルします。 単語の境界は shell-forward-word で使われて
              いるものと同じです。
       shell-backward-kill-word (M-Rubout)
              ポイントの前にある単語をキルします。  単語の境界は shell-backward-word で使われてい
              るものと同じです。
       unix-word-rubout (C-w)
              ポイントの前にある単語をキルします。 その際には空白を単語の境界として用います。  キ
              ルされたテキストはキルリングに入ります。
       unix-filename-rubout
              ポイントの前にある単語をキルします。 その際には空白とスラッシュを単語の境界として用
              います。 キルされたテキストはキルリングに入ります。
       delete-horizontal-space (M-\)
              ポイントの周りの空白とタブを全て削除します。
       kill-region
              現在のリージョン中のテキストをキルします。
       copy-region-as-kill
              リージョン中のテキストをキルバッファにコピーします。
       copy-backward-word
              ポイントの前の単語をキルバッファにコピーします。単語の境界は backward-word と同じで
              す。
       copy-forward-word
              ポイントの後ろの単語をキルバッファにコピーします。単語の境界は  forward-word と同じ
              です。
       yank (C-y)
              キルリングの先頭のテキストをバッファ中のポイントにヤンクします。
       yank-pop (M-y)
              キルリングの順番を 1 つ移動し、新たに先頭になったテキストをヤンクします。 yank また
              は yank-pop の後にしか使えません。

   数値の引き数
       digit-argument (M-0, M-1, ..., M--)
              すでに入力された引き数にこの数字を追加するか、 またはこの数字によって新しい引き数を
              始めます。 M-- を使うと、負の値を指定できます。
       universal-argument
              引き数を指定する別の方法です。 このコマンドに続けて 1  つ以上の数字が入力された場合
              (頭にマイナス記号を付けることもできます)、  これらの数字で引き数が定義されます。 こ
              のコマンドの後に数字が続いた場合、 universal-argument  を再び実行すると数値の引き数
              を終了しますが、 そうでない場合は無視されます。 特殊なケースとして、 このコマンドの
              直後に数字でもマイナス記号でもない文字がある場合には、 次のコマンドに対する引き数カ
              ウントが  4 倍になります。 引き数カウントは最初は 1 なので、 この機能を一度実行する
              と引き数カウントは 4 になり、 もう一度実行すると引き数カウントは 16 になります。 そ
              れ以降も同様です。

   補完
       complete (TAB)
              ポイントの前のテキストについて補完を試みます。 bash が補完を行う際には、 変数 (テキ
              ストが $ で始まる場合)、 ユーザ名 (テキストが ~ で始まる場合)、 ホスト名  (テキスト
              が  @  で始まる場合)、 コマンド (エイリアスや関数も含みます) の順序でマッチを行いま
              す。 いずれにもマッチしない場合には、 ファイル名補完を試みます。
       possible-completions (M-?)
              ポイントの前のテキストの補完候補を列挙します。
       insert-completions (M-*)
              ポイントの前のテキストを補完して得られるものを全て挿入します。       挿入されるもの
              は、possible-completions で列挙されるものと同じです。
       menu-complete
              complete コマンドに似ていますが、 補完される単語を補完候補リストのうちの 1 つと置換
              します。 menu-complete を繰り返して実行すると、  補完候補のリストが次々と順番に挿入
              されます。  補完リストの最後まで来るとベルが  (bell-style の設定に基づいて)  鳴らさ
              れ、元のテキストに戻ります。 引き数 n を指定すると、リスト中の位置が n 個進みます。
              負の引き数を指定すると、リスト中を逆向きに戻れます。  このコマンドは TAB に割り当て
              ることを意図して用意されたものですが、 デフォルトでは割り当ては行われていません。
       menu-complete-backward
              menu-complete コマンドに似ていますが、 menu-complete に負の引き数を与えたときのよう
              に、  補完候補のリストを逆向きに進みます。 このコマンドはデフォルトではキーに割り当
              てられていません。
       delete-char-or-list
              カーソルが行頭や行末に無ければ、カーソルの下の文字を削除します (delete-char  と同様
              です)。 カーソルが行末にある場合は、 possible-completions と同じ動作をします。 この
              コマンドはデフォルトではキーに割り当てられていません。
       complete-filename (M-/)
              ポイントの前のテキストについてファイル名の補完を試みます。
       possible-filename-completions (C-x /)
              ポイントの前のテキストについて補完候補を列挙します。 テキストはファイル名として扱わ
              れます。
       complete-username (M-~)
              ポイントの前のテキストについて補完を試みます。 テキストはユーザ名として扱われます。
       possible-username-completions (C-x ~)
              ポイントの前のテキストについて補完候補を列挙します。 テキストはユーザ名として扱われ
              ます。
       complete-variable (M-$)
              ポイントの前のテキストについて補完を試みます。   テキストはシェル変数として扱われま
              す。
       possible-variable-completions (C-x $)
              ポイントの前のテキストについて補完候補を列挙します。 テキストはシェル変数として扱わ
              れます。
       complete-hostname (M-@)
              ポイントの前のテキストについて補完を試みます。 テキストはホスト名として扱います。
       possible-hostname-completions (C-x @)
              ポイントの前のテキストについて補完候補を列挙します。 テキストはホスト名として扱いま
              す。
       complete-command (M-!)
              ポイントの前のテキストについて補完を試みます。 テキストはコマンド名として扱います。
              コマンド補完の際にマッチングを試みる順序は、 エイリアス、予約語、シェル関数、シェル
              の組み込みコマンド、 実行ファイルです。
       possible-command-completions (C-x !)
              ポイントの前のテキストについて補完候補を列挙します。 テキストはコマンド名として扱い
              ます。
       dynamic-complete-history (M-TAB)
              ポイントの前のテキストについて補完を試みます。 履歴リストの各行に対してテキストの比
              較が行われ、 マッチしたものが補完の候補となります。
       dabbrev-expand
              ポイントの前のテキストについてメニュー補完を試みます。 履歴リストの各行に対してテキ
              ストの比較が行われ、 マッチしたものが補完の候補となります。
       complete-into-braces (M-{)
              ファイル名補完を実行し、補完候補のリストを挿入します。 シェルから利用可能なリストと
              なるように、 返される候補はブレースで括られます (前述の ブレース展開 を参照)。

   キーボードマクロ
       start-kbd-macro (C-x ()
              現在のキーボードマクロに対して入力される文字列の保存を開始します。
       end-kbd-macro (C-x ))
              現在のキーボードマクロに対して入力された文字列の保存を終了し、   その定義を格納しま
              す。
       call-last-kbd-macro (C-x e)
              最後に定義されたキーボードマクロを再実行します。 マクロ内の各文字があたかもキーボー
              ドから入力されたかのように出力されます。

   その他
       re-read-init-file (C-x C-r)
              inputrc  ファイルの内容を読み込み、  このファイル中の割り当てや変数設定を取り込みま
              す。
       abort (C-g)
              現在の編集行を捨て、端末のベルを鳴らします (動作は bell-style の設定に従います)。
       do-uppercase-version (M-a, M-b, M-x, ...)
              メタ文字と共に入力された文字 x が小文字であれば、 x  に対応する大文字に割り当てられ
              ているコマンドを実行します。
       prefix-meta (ESC)
              次に入力される文字を、  メタ文字と共に入力されたことにします。 ESC fMeta-f と同
              じ意味です。
       undo (C-_, C-x C-u)
              インクリメンタルアンドゥを行います。 履歴は行ごとに別々に記憶されています。
       revert-line (M-r)
              この行に対して行った変更を全て取り消します。 このコマンドは、行が初期状態に戻るまで
              undo コマンドを実行するようなものです。
       tilde-expand (M-&)
              現在の単語についてチルダ展開を実行します。
       set-mark (C-@, M-<space>)
              ポイントにマークを設定します。  数字の引き数が与えられた場合には、 マークはその位置
              に設定されます。
       exchange-point-and-mark (C-x C-x)
              ポイントをマークと入れ換えます。 保存されている位置が現在のカーソル位置になり、  古
              いカーソル位置がマークとして保存されます。
       character-search (C-])
              文字を 1 つ読み込み、 その文字が次に現われる場所にポイントを移動させます。 負のカウ
              ントを与えると、その文字が前に現われた場所を探します。
       character-search-backward (M-C-])
              文字を 1 つ読み込み、 その文字が前に現われた場所にポイントを移動させます。 負のカウ
              ントを与えると、その文字が次に現われる場所を探します。
       skip-csi-sequence
              Home や End などのキーに定義されるような複数キーからなるシーケンスを 使い切るだけの
              文字を読み込みます。 これらのシーケンスは、通常 ESC-[  で表されるコントロールシーケ
              ンス  (CSI)   で始まります。  このシーケンスが  "\[" に割り当てられているとすると、
              キーが明示的に readline のコマンドに割り当てられている場合を除き、 それらのシーケン
              スを生み出すキーは、  はぐれた文字を編集バッファに挿入されず、何もしません。 このコ
              マンドはデフォルトではキーに割り当てられていませんが、 多くの場合 ESC-[  に割り当て
              られます。
       insert-comment (M-#)
              数字の引き数を指定しない場合、readline  の comment-begin 変数の値が現在の行の先頭に
              挿入されます。 数字の引き数を指定すると、トグル状に動作します。  つまり、行の先頭の
              文字が  comment-begin の値にマッチしない場合には、 その値が挿入されます。マッチする
              場合には、comment-begin の文字が行の先頭から削除されます。 いずれの場合も、改行が打
              ち込まれたのと同じように行の入力が完了します。  comment-begin  のデフォルト値によっ
              て、 このコマンドは現在の行をシェルのコメントとします。  数字の引き数を指定したこと
              でコメントの文字が削除されると、 行はシェルにより実行されます。
       glob-complete-word (M-g)
              ポイントの前の単語がパス名展開のパターンとして扱われます。 末尾に暗黙のアスタリスク
              が付いているものとみなされます。 このパターンを使って補完候補のファイル名のリストが
              生成されます。
       glob-expand-word (C-x *)
              ポイントの前の単語がパス名展開のパターンとして扱われ、 この単語と置き換えられる形で
              マッチするファイル名のリストが挿入されます。 数字の引き数を与えると、パス名展開の前
              に末尾にアスタリスクを追加します。
       glob-list-expansions (C-x g)
              glob-expand-word  で生成されるのと同じ展開結果のリストが表示され、 行が再描画されま
              す。 数字の引き数を与えると、パス名展開の前に末尾にアスタリスクを追加します。
       dump-functions
              全ての関数とそのキー割り当てを、 readline の出力ストリームに出力します。 数値の引き
              数を与えると、 出力は inputrc に書き込める形に整形されます。
       dump-variables
              全ての設定可能な  readline  の変数とその値を、  readline の出力ストリームに出力しま
              す。 数値の引き数を与えると、 出力は inputrc に書き込める形に整形されます。
       dump-macros
              マクロに割り当てられた readline のキーシーケンスと マクロが出力する文字列を全て出力
              します。 数値の引き数を与えると、 出力は inputrc に書き込める形に整形されます。
       display-shell-version (C-x C-v)
              現在実行している bash のバージョン情報を表示します。

   プログラム補完
       complete  組み込みコマンドで 補完仕様 (compspec) が定義されているコマンドに対して 引き数の
       単語補完が試みられると、 プログラム補完の機能が呼び出されます  (組み込みコマンド  complete
       については、後述する シェルの組み込みコマンド を参照)。

       まず、コマンド名が特定されます。  コマンド名の単語が空文字列であれば (空の行の先頭で補完し
       ようとしたとき)、 complete-E オプションで定義された補完仕様が使われます。 そのコマンド
       に対して補完仕様が定義されていれば、  その補完仕様がその単語の補完候補のリスト生成に使われ
       ます。 コマンドの単語がフルパス名であれば、 最初にフルパス名の補完仕様が検索されます。  フ
       ルパス名に対する補完仕様が見つからなかった場合は、  最後のスラッシュ以降の部分に対して該当
       する補完仕様を見つけようとします。 補完仕様が見つからなかった場合は、 complete-D  オプ
       ションで定義された補完仕様が使われます。

       補完仕様が見つかると、その補完仕様を使って マッチする単語のリストが生成されます。 補完仕様
       が見つからなかった場合は、 前述の 補完 の節で説明したような bash  のデフォルトの補完が行わ
       れます。

       まず、補完仕様で指定された動作が用いられます。  補完される単語の前置部分にマッチするものだ
       けが返されます。 ファイル名やディレクトリ名の補完に -f-d  オプションが使用された場合
       は、シェル変数 FIGNORE がマッチのフィルタとして使用されます。

       続いて -G オプションによって指定された ファイル名展開パターンの補完が生成されます。 パター
       ンによって生成された単語は、 補完される単語とマッチする必要はありません。 GLOBIGNORE  シェ
       ル変数はマッチのフィルタとしては使われませんが、 FIGNORE 変数は使用されます。

       次に、 -W オプションで指定された引き数の文字列が考慮されます。 文字列は、最初に IFS 特殊変
       数の文字を区切り文字として分割されます。 シェルのクォート処理は考慮されます。 それぞれの単
       語は、前述の  展開 で示したように、ブレース展開、チルダ展開、パラメータと変数の展開、 コマ
       ンド置換、算術式展開、パス名展開が行われます。  結果は、前述の単語の分割で示した規則によっ
       て分割されます。 展開の結果は補完される単語の前置部分とマッチが行われ、 マッチした単語が補
       完候補となります。

       これらのマッチが生成された後、 シェル関数や -F-C  オプションで指定されたコマンドが呼び
       出されます。   コマンドや関数が呼び出されるときは、   COMP_LINE,   COMP_POINT,   COMP_KEY,
       COMP_TYPE 変数に前述のシェル変数で示すように値が設定されます。  シェル関数が呼び出される場
       合は、  COMP_WORDSCOMP_CWORD 変数も設定されます。 関数やコマンドが呼び出されるときは、
       最初の引き数は引き数が補完されるコマンドの名前、 二番目の引き数は補完される単語、 三番目の
       引き数は現在のコマンドラインで補完中の単語の 前に置かれる単語となります。 補完される単語に
       対して生成された補完の候補はフィルタリングされません。  関数やコマンドは生成されたマッチと
       は無関係に補完されます。

       -F  で指定された関数がまず呼び出されます。 関数は、後述する compgen 組み込みコマンドを含め
       た、 全てのシェルの機能を使ってマッチを生成します。 補完候補は必ず COMPREPLY  配列変数に格
       納されます。

       続いて -C オプションで指定されたコマンドが呼び出され、 環境変数をコマンド置換します。 この
       コマンドは、補完候補を 1  行にひとつずつ標準出力に出力します。  必要があれば、バックスラッ
       シュが改行をエスケープするために使用されます。

       全ての補完候補が生成された後で、 -X オプションで指定されたフィルタが補完候補に作用します。
       フィルタは、パス名展開で使用されたようなパターンです。パターン中の &  は補完される単語に置
       換されます。  文字通りの & はバックスラッシュでエスケープします。 バックスラッシュはマッチ
       を試みる前に削除されます。 パターンにマッチした補完は候補から削除されます。 先行する !  は
       パターンを否定します。 この場合、パターンにマッチしなかった補完が削除されます。

       最後に、-P-S オプションで指定された 前置部分と後置部分が補完候補のそれぞれに加えられま
       す。 そして結果が readline 補完コードに補完候補のリストとして返されます。

       直前に行われた動作が何にもマッチせず、 補完仕様が定義されたときに -o dirnames オプションが
       complete に与えられていれば、 ディレクトリ名への補完が試みられます。

       補完仕様が定義されたときに -o plusdirs オプションが complete に与えられていれば、 ディレク
       トリ名への補完が試みられ、マッチした候補が全て ほかの動作の結果に付け加えられます。

       デフォルトでは、補完仕様が見つかった場合、 それが生成したものがなんであれ、 全ての補完候補
       のリストとして、補完コードに返されます。  デフォルトの bash 補完は試みられず、 readline の
       デフォルトのファイル名補完は無効になります。 補完仕様が定義されたときに -o bashdefault  オ
       プションが  complete に与えられていれば、 補完仕様が何にもマッチしなければ bash のデフォル
       トの補完が試みられます。 補完仕様が定義されたときに -o default オプションが complete  に与
       えられていれば、 補完仕様が (試みられていれば、デフォルトの bash の補完も)  何にもマッチし
       なければ readline のデフォルトの補完が行われます。

       補完仕様でディレクトリ名の補完が必要とされる場合、  プログラム補完の関数は  readline  に、
       ディレクトリへのシンボリックリンクに補完された名前の最後に スラッシュを追加させます。 これ
       は   readline   の変数mark-symlinked-directories   の設定に関わらず、   readline    の変数
       mark-directories の値に左右されます。

       動的に補完を変えるための方法があります。 これは complete -D で指定されたデフォルトの補完と
       組み合わせたときに非常に便利です。  補完の処理のために実行されたシェル関数は、終了ステータ
       スとして  124  を返すことで、補完を再度試みることを指示できます。  シェル関数が  124  を返
       し、補完が試みられるコマンド (関数が実行されるときの第 1 引き数)  に対して定義された補完仕
       様が 変更されていれば、プログラム補完はコマンドの新しい補完仕様を 探すために最初からやり直
       されます。 これにより一連の補完が、一度に読み込まれるのではなく、 補完が試みられるときに動
       的に組み立てられます。

       例えば、補完仕様のライブラリがあり、それぞれがコマンドの名前に  合わせたファイルに保存され
       ていると仮定すると、 以下のデフォルトの補完関数は補完を動的に読み込みます。

       _completion_loader()
       {
            . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
       }
       complete -D -F _completion_loader

履歴 (HISTORY)

       -o  history  オプションを組み込みコマンドの  set  で有効にすると、  コマンド履歴  (command
       history)  (以前に入力したコマンドのリスト)  にアクセスできるようになります。 変数 HISTSIZE
       の値が、履歴リストに保存するコマンドの数になります。    過去に入力したコマンドのうち、最新
       HISTSIZE  個分 (デフォルトは 500 個) のテキストが保存されます。 シェルは各コマンドを、パラ
       メータ展開や変数展開  (前述の  展開  を参照)  を行う前の形で履歴リストに格納します。  ただ
       し、履歴展開は実行してから格納します。 履歴展開はシェル変数 HISTIGNOREHISTCONTROL の値
       に従って実行されます。

       起動時に、履歴は変数 HISTFILE (デフォルトは ~/.bash_history)  が示すファイルの内容で初期化
       されます。  HISTFILE  で指定されたファイルは、 HISTFILESIZE で指定された行数を越えないよう
       に、必要に応じて切り詰められます。  履歴ファイルを読み込むときに、履歴のコメント文字で始ま
       り直後に数字が続く行は、 直前の履歴行のタイムスタンプとして解釈されます。 こうしたタイムス
       タンプを表示するかどうかは、変数 HISTTIMEFORMAT の値により決まります。  対話的なシェルが終
       了する際には、最近の  $HISTSIZE 個の行が履歴リストから $HISTFILE にコピーされます。 シェル
       オプション histappend ( シェルの組み込みコマンド の項の shopt の説明を参照) が有効になって
       いると、  これらの行が履歴ファイルの末尾に追加されます。  このオプションが無効ならば、履歴
       ファイルは上書きされます。 HISTFILE が設定されていないか、履歴ファイルが書き込めない状態だ
       と、 履歴は保存されません。 変数 HISTTIMEFORMAT が設定されている場合、シェルのセッションを
       越えて保持されるよう、  タイムスタンプが履歴のコメント文字を付けて履歴ファイルに書き込まれ
       ます。 履歴のコメント文字は、タイムスタンプをほかの履歴行と区別するために使われます。 履歴
       の保存を行った後には、履歴ファイルは行数が  HISTFILESIZE  行を越えないように切り詰められま
       す。 HISTFILESIZE が設定されていなければ、切り詰めは行われません。

       組み込みコマンド  fc (後述の シェルの組み込みコマンド を参照) を用いると、履歴リストの一部
       を表示・編集して再実行できます。 組み込みコマンドの history を用いると、履歴リストを表示・
       編集したり、  履歴ファイルを操作したりできます。  コマンドライン編集を使っている場合には、
       各編集モードでいろいろな検索コマンドが利用でき、 履歴リストへアクセスできます。

       このシェルでは、どのコマンドが履歴リストに保存されるかを制御できます。 HISTCONTROL  変数と
       HISTIGNORE   変数を設定すると、   シェルは入力されたコマンドの一部しか保存しなくなります。
       シェルオプションの cmdhist を有効にすると、シェルは複数行に別れているコマンドの各行を 同じ
       履歴エントリに保存しようとします。  この際には、文法的な正しさを保つためにセミコロンが必要
       に応じて追加されます。 シェルオプションの  lithist  を有効にすると、このシェルは行の途中に
       セミコロンではなく改行文字を置く形でコマンドを保存します。  シェルオプションの設定と設定取
       り消しについては、後述の シェルの組み込みコマンド における説明を参照してください。

履歴の展開

       このシェルは、 csh  の履歴展開と同じような履歴機能をサポートしています。  このセクションで
       は、履歴展開で使用できる記法・機能を説明します。  この機能は対話的シェルならばデフォルトで
       有効になっていますが、 組み込みコマンド set+H オプション (後述の  シェルの組み込みコマ
       ンド を参照) で無効にできます。 非対話的シェルの場合は、デフォルトでは履歴展開は行われませ
       ん。

       履歴展開は、履歴リスト中の単語を入力ストリームに入れます。  この機能を利用すると、コマンド
       を繰り返したり、 前のコマンドで指定したオプションを現在の入力行に挿入したり、 前のコマンド
       の誤りを手早く直したり、 といったことが簡単にできるようになります。

       履歴展開が実行されるのは、入力行全体を読み込んだ直後であり、  シェルが行を単語に分割するよ
       りも前です。  履歴展開の動作は 2 段階で行われます。 まず最初に、置換に使う行を履歴リストか
       ら選びます。 次に、その行のどの部分を現在の行に書き込むかを選択します。 履歴リストから選ば
       れた行はイベント (event) と呼ばれ、 この行のうち動作の対象となる部分を単語列 (words)と呼び
       ます。 様々な修飾子 (modifier)  が利用でき、  選択された単語列の操作が可能になっています。
       行の単語への分割は入力を読み込むときと同じように行われるので、  メタ文字で区切られた複数の
       単語をクォートで括ったものは 1 つの単語とみなされます。 履歴展開が行われるのは、履歴展開文
       字が現われたときです。  履歴展開文字はデフォルトでは ! です。 履歴展開文字をクォートできる
       のは、 バックスラッシュ (\) とシングルクォートだけです。

       履歴展開文字の直後にあって、クォートされていなくても、 履歴展開されない文字があります。 空
       白文字、タブ文字、改行文字、復帰文字、= です。 シェルオプションの extglob が有効になってい
       る場合には、 ( も展開されません。

       組み込みコマンドの shopt を用いて、何種類かあるシェルオプションを設定すると、 履歴展開の動
       作を調整できます。 シェルオプションの histverify が有効で (組み込みコマンド shopt の説明を
       参照)、かつ readline が使われている場合には、 履歴置換を行った結果はすぐにはシェルのパーザ
       に渡されません。  展開された行は readline の編集バッファに再び読み込まれ、さらに編集が行え
       る状態になります。 readline を使用しており、かつシェルオプションの histreedit が有効である
       場合、履歴置換が失敗してもその結果は readline の編集バッファに再び読み込まれ、訂正できる状
       態となります。 組み込みコマンド history-p  オプションを使うと、実際に履歴展開を行う前
       に、  どのように展開されるのかを見ることができます。  組み込みコマンド  history-s オプ
       ションを使うと、実際にコマンドの実行をせずに、 コマンドを履歴リストの末尾に追加でき、 それ
       以降の呼び出しで利用できるようになります。

       このシェルでは、履歴展開機構で使ういろいろな文字を制御できます (前述の シェル変数 の項目に
       おける histchars の説明を参照)。  シェルは、履歴ファイルに書き込むときに、履歴のコメント文
       字を使って、 履歴のタイムスタンプであることが分かるようにします。

   イベント指示子 (Event Designator)
       イベント指示子は、 履歴リスト中のコマンドラインエントリを参照するものです。 絶対位置の参照
       でない限り、イベントは履歴リスト内の 現在の位置からの相対的な位置を示します。

       !      履歴置換を開始します。ただし、 ブランク文字、 改行文字、 = 、  (  (シェルオプション
              extglob が組み込みコマンド shopt によって有効になっている場合) のいずれかが後に続く
              場合は除きます。
       !n     n 個目のコマンドラインを参照します。
       !-n    現在から n 個前のコマンドを参照します。
       !!     直前のコマンドを参照します。`!-1' と同義です。
       !string
              string で始まるコマンドのうち、履歴リスト中の現在位置以前で、  一番近いところで実行
              したものを参照します。
       !?string[?]
              string  を含むコマンドのうち、履歴リスト中の現在位置以前で、 一番近いところで実行し
              たものを参照します。 string の直後が改行文字ならば、最後の ? は省略してもかまいませ
              ん。
       ^string1^string2^
              簡易置換。     string1string2    に置換して直前のコマンドを繰り返します。
              “!!:s/string1/string2/” と同義です (後述の修飾子を参照)。
       !#     これまでに打ち込んだコマンドライン全体。

   単語指示子 (Word Designators)
       単語指示子 (word designator)  は、  イベントから所望の欲しい単語を選ぶときに用いられます。
       イベント指定と単語指示子のセパレータには  : を用います。 単語指示子が ^, $, *, -, % のいず
       れかで始まる場合には、このセパレータは省略できます。    単語には行の先頭から順に番号が振ら
       れ、 先頭の単語が 0 になります。 単語は現在の行に、空白 1 つで区切られて挿入されます。

       0 (ゼロ)
              0 番目の単語。シェルにとっては、コマンドを表す単語になります。
       n      n 番目の単語。
       ^      最初の引き数。つまり 1 番目の単語です。
       $      最後の引き数。
       %      `?string?' 検索にマッチする、一番現在に近い単語。
       x-y    単語の範囲。`0-y' の省略形として `-y' が使えます。
       *      0 番目を除く全ての単語。これは `1-$' の別表現です。 イベント中に単語が 1 つしかない
              場合に * を使ってもエラーにはなりません。 この場合には空文字列が返されます。
       x*     x-$ の省略形です。
       x-     x* と同様に x-$ の省略形ですが、 ただし最後の単語は含みません。

       イベント指定なしに単語指示子が与えられた場合、 直前のコマンドがイベントとして使われます。

   修飾子 (Modifiers)
       単語指示子 (省略可能) の後には、 1 個以上の以下に示す修飾子を並べて置くことができます。 そ
       れぞれの修飾子の前には `:' を付けます。

       h      パス名から末尾にある部分 (ファイル名) を取り除き、 前の方 (ディレクトリ部) だけを残
              します。
       t      パス名から前の方 (ディレクトリ部) を取り除き、 末尾にある部分 (ファイル名) だけを残
              します。
       r      末尾にある .xxx 形式のサフィックスを取り除き、 ベース名 (basename) だけを残します。
       e      末尾のサフィックスだけを残して、全ての部分を取り除きます。
       p      新しいコマンドを表示しますが、実行はしません。
       q      置換が行われた単語をクォートし、それ以上の置換が行われないようにします。
       x      q  と同じように置換後の単語をクォートしますが、 空白文字 と改行文字のところで単語に
              分割します。
       s/old/new/
              イベント行で最初に現われた oldnew に置き換えます。/  の代わりに任意の区切り文字
              を使うこともできます。  最後の区切り文字がイベント行の最後の文字ならば、 これは省略
              できます。 バックスラッシュ 1 つでクォートすれば、 oldnew  の中で区切り文字も使
              えます。  new  に & が含まれている場合には、 & は old に置き換えられます。 バックス
              ラッシュ 1 つを前に置けば & をクォートできます。 old が空文字列ならば、最後に置換さ
              れた  old が設定されます。 以前に履歴置換が全く行われていない場合には、現在に一番近
              い !?string[?] の検索で使われた string が設定されます。
       &      直前の置換を繰り返します。
       g      変更をイベント行全体に適用します。 これは `:s' (例:`:gs/old/new/') や `:&' と組み合
              わせて使われます。 `:s' と一緒に使った場合には、 / の代わりに任意の区切り文字を使え
              ます。 また、最後の区切り文字がイベント行の最後の文字ならば、  これは省略できます。
              g の別名として a を使うこともできます。
       G      この修飾子に続く `s' 修飾子をイベント行の各単語に 1 回ずつ適用します。

シェルの組み込みコマンド

       特に断らない限り、このセクションで説明されている組み込みコマンドのうち  - で始まるオプショ
       ンを受け付けるものは、オプションの終わりを表す  --  も受け付けます。  組み込みコマンド  :,
       true,  false,  test  はオプションを持たず、--  を特別扱いしません。 組み込みコマンド exit,
       logout, break, continue, let, shift は、- で始まる引き数として受け取るのに、 -- を必要とし
       ません。 そのほかの組み込みコマンドは、 受け取ると明記されているオプション以外を引き数とし
       て受け取り、 - で始まる引き数を不正なオプションをとて解釈します。 この解釈を防ぐには -- が
       必要です。
       : [arguments]
              何もしません。このコマンドは arguments を展開し、指定されたリダイレクトを実行する以
              外には何も行いません。 終了コード 0 を返します。

        .  filename [arguments]
       source filename [arguments]
              filename からコマンドを読み込み、現在のシェル環境の下で実行します。 filename 内の最
              後に実行したコマンドの終了ステータスを返します。  filename にスラッシュが含まれてい
              ない場合、 filenamePATH に含まれるディレクトリから探されます。 PATH  内で検索さ
              れるファイルは、実行可能である必要はありません。  bashposix モード 以外で動作し
              ているときは、 PATH 中でファイルを見つけられなかった場合に、 カレントディレクトリが
              検索されます。  組み込みコマンド shopt に対する sourcepath オプションが無効にされて
              いる場合、 PATH の検索は行われません。 何らかの arguments  が指定された場合、これら
              の引き数は filename を実行したときの位置パラメータとなります。 指定されなかった場合
              は、位置パラメータは変更されません。 返却ステータスはスクリプト内で最後に実行したコ
              マンドのステータスです  (コマンドが全く実行されなければ 0 です)。 filename が見つか
              らない場合や読み込めない場合には偽となります。

       alias [-p] [name[=value] ...]
              alias コマンドを引き数を付けずに (あるいは -p オプションを付けて)  実行すると、エイ
              リアスのリストが  「alias name=value」の形で標準出力に出力されます。 引き数を与えた
              場合には、value を与えられた name それぞれに対するエイリアスが定義されます。  value
              の末尾に空白があると、エイリアスが展開されたときに、 空白の次の単語についてエイリア
              ス置換があるかどうか調べられます。 引き数リスト中に value  が与えられていない  name
              があった場合は、  それぞれに対して名前とエイリアスの値が出力されます。 エイリアスが
              定義されていない name が指定された場合以外は、 alias は真を返します。

       bg [jobspec ...]
              サスペンドされているジョブ jobspec を  バックグラウンドで実行再開します。このジョブ
              は、初めから  & を付けて起動されていたかのように動作を続けます。 jobspec がない場合
              には、 シェルが記録しているカレントジョブ (current job) が使われます。  bg  jobspec
              は通常  0 を返しますが、ジョブ制御が無効であるときに実行した場合や、 ジョブ制御が有
              効であっても jobspec が有効なジョブを指定していない場合や jobspec  がジョブ制御なし
              で開始したジョブを指定している場合は異なる値を返します。

       bind [-m keymap] [-lpsvPSV]
       bind [-m keymap] [-q function] [-u function] [-r keyseq]
       bind [-m keymap] -f filename
       bind [-m keymap] -x keyseq:shell-command
       bind [-m keymap] keyseq:function-name
       bind readline-command
              readline の現在のキー割り当てと関数割り当てを表示したり、 キーシーケンスを readline
              の関数やマクロに割り当てたり、 readline の変数を設定したりします。 オプション以外の
              引き数はすべて、 .inputrc , に書くのと同じ形式のコマンドですが、 それぞれの割り当て
              やコマンドは独立した引き数として渡さなければなりません。    例えば     '"\C-x\C-r":
              re-read-init-file'  のように指定します。 オプションを指定した場合には、以下のような
              意味を持ちます:
              -m keymap
                     キーマップ keymap を、以降の割り当てによって変更します。  指定できる  keymap
                     名は、   emacs,   emacs-standard,   emacs-meta,   emacs-ctlx,  vi,  vi-move,
                     vi-command, vi-insert です。 vivi-command  と同じです。  また  emacsemacs-standard と同じです。
              -l     readline 関数の名前を全てリスト表示します。
              -p     readline の関数の名前と割り当てを表示します。 表示は、再び読み込みできる形式
                     で出力されます。
              -P     readline の関数の現在の名前と割り当てをリスト表示します。
              -s     マクロに割り当てられた readline のキーシーケンスと、  マクロが出力する文字列
                     を表示します。 表示は、再び読み込みできる形式で出力されます。
              -S     マクロに割り当てられた  readline のキーシーケンスと、 マクロが出力する文字列
                     を表示します。
              -v     readline の変数名と値を表示します。 表示は、再び読み込みできる形式で出力され
                     ます。
              -V     readline の現在の変数名と値をリスト表示します。
              -f filename
                     キー割り当てを filename から読み込みます。
              -q function
                     指定された function を呼び出すキーを問い合わせます。
              -u function
                     指定された function に割り当てられているキーの割り当てを 全て取り消します。
              -r keyseq
                     keyseq に対する現在の割り当てを削除します。
              -x keyseq:shell-command
                     keyseq     が押されるたびに、    shell-command    が実行されるようにします。
                     shell-command を実行するとき、シェルは変数 READLINE_LINEreadline  の編集
                     バッファの内容を設定し、変数 READLINE_POINT に現在の挿入ポイントの位置を設定
                     します。 実行したコマンドが READLINE_LINEREADLINE_POINT の値を変更した場
                     合、新しい値が編集の状態に反映されます。

              認識できないオプションが与えられた場合やエラーが起きた場合以外は、  返り値は 0 にな
              ります。

       break [n]
              for, while, until, select のループから抜けます。n が指定されていれば、n レベル分 の
              ループを  break します。 n は 1 以上でなければなりません。 n がループの深さよりも大
              きい場合には、全てのループから抜けます。 n が 1 未満の場合を除けば、返り値は  0  で
              す。

       builtin shell-builtin [arguments]
              指定されたシェル組み込みコマンドを実行します。コマンドには arguments を引き数として
              渡し、このコマンドの終了ステータスを返します。 これはシェル組み込みコマンドと同じ名
              前の関数を定義するときに便利で、 その関数内で組み込みコマンドの機能を使うことができ
              ます。 組み込みコマンド cd  は普通、これを使って再定義されます。  shell-builtin  が
              シェル組み込みコマンドでなければ、終了ステータスは偽となります。

       caller [expr]
              実行中のサブルーチン (シェル関数や、組み込みコマンド .source で呼び出したスクリ
              プト) 呼び出しのコンテキストを返します。 expr が指定されていなければ、caller は  現
              在のサブルーチン呼び出しの行番号とソースファイル名を表示します  expr に負でない整数
              が与えられた場合、caller は、  現在の呼び出しスタック中で指定した位置の行番号、サブ
              ルーチン名、  ソースファイルを表示します。 スタックトレースを表示する場合などに、範
              囲外の情報が使われるかもしれません。 現在のフレームはフレーム 0 です。 シェルがサブ
              ルーチンを呼び出していない場合や、  expr が呼び出しスタックの有効な位置に相当しない
              場合を除けば、 返り値は 0 です。

       cd [-L|[-P [-e]]] [dir]
              カレントディレクトリを dir に変更します。 変数  HOME  の値が  dir  のデフォルト値で
              す。変数 CDPATH は、 dir を含むディレクトリの検索パスを定義します。 CDPATH 内では候
              補ディレクトリ名はコロン (:) で区切ります。  CDPATH  中に空のディレクトリ名がある場
              合、これはカレントディレクトリ (つまり “.”)  を意味します。 dir がスラッシュ (/) で
              始まる場合には、 CDPATH は使われません。 -P  オプションは、シンボリックリンクを辿ら
              ないで物理的なディレクトリ構造を  使うように指示します  (組み込みコマンド set-P
              オプションも参照)。 -L オプションを指定すると、シンボリックリンクを辿るようになりま
              す。  -e オプションを -P オプションと同時に指定すると、ディレクトリの変更が成功した
              後に カレントディレクトリが判定できない場合、cd は失敗のステータスを返します。 引き
              数に  -  を指定するのは、  $OLDPWD を指定するのと同じ意味です。 CDPATH 内の空以外の
              ディレクトリ名が使われたときや、 - が最初の引き数のときに、ディレクトリの変更が成功
              すると、  新しいディレクトリの絶対パス名が標準出力に書かれます。 ディレクトリの変更
              が成功した場合には返り値は真になり、 そうでない場合には偽になります。

       command [-pVv] command [arg ...]
              command に引き数 args  を付けて実行します。ただし、シェル関数の通常の参照は行いませ
              ん。 組み込みコマンドと PATH 内で見つかるコマンドだけが実行されます。 -p オプション
              が与えられると、 command の検索を行う際に PATH のデフォルト値が使われます。これによ
              り、  全ての標準ユーティリティを確実に見つけられます。  -V オプションまたは -v オプ
              ションを与えると、 command の説明が出力されます。 -v オプションでは、 command  を起
              動するときに使われるコマンドやファイル名を示す単語が表示されます。  -V ではさらに詳
              しい説明が表示されます。 -V オプションや -v  オプションを与えた場合、終了ステータス
              は  command が見つかれば 0 となり、見つからなければ 1 となります。 どちらのオプショ
              ンも与えなかった場合に、エラーが起きたり、 command を見つけられなかったりすると、終
              了ステータスは 127 になります。 それ以外の場合には、組み込みコマンド command の終了
              ステータスは、 command の終了ステータスです。

       compgen [option] [word]
              option  に従って、word  にマッチする補完候補のリストを生成します。   オプションには
              complete  組み込みコマンドと同じものが指定できますが、  -p-r は指定できません。
              マッチのリストは標準出力に出力されます。 -F-C オプションを使用したときは、 プロ
              グラム補完機能によって設定された様々なシェル変数は、 利用可能であっても有用な値を持
              ちません。

              マッチのリストは、同じフラグによる補完仕様で プログラム補完のコードが直接生成したか
              のように  生成されます。 word が指定されると、word にマッチする補完だけが表示されま
              す。

              戻り値は、 無効なオプションが指定された場合やマッチが生成されなかった場合以外は  真
              になります。

       complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F
       function] [-C command]
              [-X filterpat] [-P prefix] [-S suffix] name [name ...]
       complete -pr [-DE] [name ...]
              各 name の引き数を、どのように補完するのかを指定します。 -p  オプションが指定された
              場合や、  何もオプションが指定されなかった場合は、 現在の補完仕様が (入力として再利
              用できる形で) 出力されます。 -r オプションは、それぞれの name  の補完指定を削除しま
              す。  name が指定されなかった場合は全ての補完指定を削除します。 -D オプションは、残
              りのオプションと動作を “デフォルトの” コマンド補完  (補完が定義されていないコマンド
              に対して 試みられる補完) に適用することを示します。 -E オプションは、残りのオプショ
              ンと動作を “空の” コマンド補完 (空行に対して試みられる補完)  に適用することを示しま
              す。

              単語補完が試みられたときに、補完指定が適用される流れは、 前述の プログラム補完 で説
              明されています。

              他のオプションは、指定された場合、以下のような意味を持ちます。 -G, -W, -X  オプショ
              ンの引き数 (必要ならば -P-S オプションの場合も) はクォートして、 組み込みコマン
              ド complete が呼び出される前に展開されないようにすべきです。
              -o comp-option
                      comp-option は補完仕様の動作をいくつかの観点から制御し、 単純な補完生成以外
                      ができるようにします。 comp-option には以下のどれかひとつを指定できます。
                      bashdefault
                              補完仕様がマッチを全く生成しなかった場合に、  bash のデフォルトの補
                              完を用います。
                      default 補完仕様がマッチを全く生成しなかった場合に、 readline  のデフォルト
                              の補完を用います。
                      dirnames
                              補完仕様がマッチを全く生成しなかった場合に、 ディレクトリ名を補完し
                              ようとします。
                      filenames
                              補完仕様がファイル名を生成することを readline に伝え、 readline  が
                              ファイル名特有の処理  (ディレクトリ名にスラッシュを加えたり、特殊文
                              字をクォートしたり、 末尾の空白を削除したり、など) を行えるようにし
                              ます。 シェル関数と共に用いることを想定しています。
                      nospace 行末で単語を補完したときに空白を付け加える動作   (デフォルトの動作)
                              を やめるように readline に伝えます。
                      plusdirs
                              補完仕様で定義されたマッチした候補が生成された後に、 ディレクトリ名
                              の補完を試み、ほかの動作の結果にマッチした候補が 全て追加されます。
              -A action
                      action は補完候補リストの生成動作で、 以下のどれかひとつを指定します。
                      alias   エイリアス名。-a でも指定できます。
                      arrayvar
                              配列変数名。
                      binding readline キー割り当て名。
                      builtin シェル組み込みコマンド名。-b でも指定できます。
                      command コマンド名。-c でも指定できます。
                      directory
                              ディレクトリ名。-d でも指定できます。
                      disabled
                              無効にされているシェル組み込みコマンドの名前。
                      enabled 有効にされているシェル組み込みコマンドの名前。
                      export  エクスポートされたシェル変数の名前。 -e でも指定できます。
                      file    ファイル名。-f でも指定できます。
                      function
                              シェル関数の名前。
                      group   グループ名。-g でも指定できます。
                      helptopic
                              組み込みコマンド help に指定できるヘルプのトピック名。
                      hostname
                              HOSTFILE シェル変数で指定されたファイルから得られたホスト名。
                      job     ジョブ名 (ジョブ制御が有効な場合)。-j でも指定できます。
                      keyword シェルの予約語。-k でも指定できます。
                      running ジョブ制御が有効であれば、実行中のジョブ名。
                      service サービス名。-s でも指定できます。
                      setopt  組み込みコマンド set-o オプションで有効な引き数。
                      shopt   組み込みコマンド shopt に指定できるシェルオプション名。
                      signal  シグナル名。
                      stopped 停止しているジョブ名 (ジョブ制御が有効な場合)。
                      user    ユーザ名。-u でも指定できます。
                      variable
                              全てのシェル変数名。-v でも指定できます。
              -C command
                      command がサブシェル環境で実行され、 その出力が補完候補として使用されます。
              -F function
                      シェル関数  function  は現在のシェル環境で実行されます。 関数が終了したとき
                      に、補完候補が COMPREPLY 配列変数から取得されます。
              -G globpat
                      パス名展開パターン globpat を展開し、 補完候補のリストを生成します。
              -P prefix
                      ほかの全てのオプションが適用された後で、 それぞれの補完候補の先頭に  prefix
                      が付け加えられます。
              -S suffix
                      ほかの全てのオプションが適用された後で、 それぞれの補完候補の後に suffix が
                      付け加えられます。
              -W wordlist
                      wordlistIFS 特殊変数に含まれる文字を区切り文字として分割され、 分割され
                      た単語がそれぞれ展開されます。 展開結果のリストのメンバのうち、補完中の単語
                      がマッチするものが、 補完候補となります。
              -X filterpat
                      filterpat がパス名展開のパターンとして使用されます。 先行するオプション・引
                      き数によって生成された補完候補のリストに適用され、 filterpat とマッチするそ
                      れぞれの補完候補がリストから削除されます。 filterpat!  で始まる場合、パ
                      ターンの否定の意味になります。 つまり、filterpat にマッチしない補完対象が削
                      除されます。

              不正なオプションが指定された場合、-p-r 以外のオプションで name が指定されなかっ
              た場合、  存在しない name の指定によって補完が削除されようとした場合、 補完の指定の
              追加に失敗した場合、を除いては、返り値は真になります。

       compopt [-o option] [-DE] [+o option] [name]
              name の補完オプションを option に従って変更します。 name が指定されない場合は、実行
              中の補完が対象になります。 options が与えられない場合は、name または現在の補完の 補
              完オプションを表示します。 option に指定できる値は、前述の組み込みコマンド complete
              で有効なものです。  -D オプションは、残りのオプションを “デフォルトの” コマンド補完
              (補完が定義されていないコマンドに対して 試みられる補完)  に適用することを示します。
              -E  オプションは、残りのオプションを  “空の” コマンド補完 (空行に対して試みられる補
              完) に適用することを示します。

              不正なオプションが指定された場合、 補完仕様が定義されていない name のオプションを変
              更しようとした場合、 出力エラーが起こった場合、を除いては、返り値は真になります。

       continue [n]
              for, while, until, select ループの次の繰り返し分から実行を継続します。 n を指定する
              と、深さを n 個分上がったループで実行を継続します。 n は  1  以上でなければなりませ
              ん。  n がループの深さよりも大きい場合、 最後のループ (「トップレベル」のループ) で
              実行が継続されます。 n が 1 未満の場合を除けば、返り値は 0 です。

       declare [-aAfFgilrtux] [-p] [name[=value] ...]
       typeset [-aAfFgilrtux] [-p] [name[=value] ...]
              変数を宣言したり、変数に属性を与えたりします。 name  を指定しなければ、変数の値が表
              示されます。  -p  オプションを指定すると、各  name の属性と値が表示されます。 -pname 引き数を指定すると、他のオプションは無視されます。 -p オプションが name 引き数
              なしで指定されると、  他のオプションで指定された属性を持っている 全ての変数の属性と
              値を表示します。 -p 以外のオプションが指定されない場合、 declare は全てのシェル変数
              の属性と値を表示します。  -f オプションは表示をシェル関数に限定します。 -F オプショ
              ンを指定すると、関数定義の表示を止めます。     関数の名前と属性だけが出力されます。
              shopt によってシェルオプション extdebug が有効になっていれば、 関数が定義されている
              ソースファイルの名前と行番号も表示されます。 -F  オプションを指定すると、  -f  オプ
              ションも指定したことになります。  -g オプションを指定すると、declare がシェル関数の
              中で実行されたときであっても、 グローバルスコープで変数の作成、変更を行います。  ほ
              かの場合には無視されます。  以下のオプションを使うと、 指定した属性を持つ変数の出力
              を限定したり、 変数に属性を与えたりできます:
              -aname は配列変数です (前述の 配列 を参照)。
              -Aname は連想配列変数です (前述の 配列 を参照)。
              -f     関数名だけを使います。
              -i     変数を整数として扱います。変数に値が代入されたときに算術式評価 (  算術式評価
                     を参照) が実行されます。
              -l     変数に値が代入されると、全ての大文字は小文字に変換されます。  大文字属性は無
                     効になります。
              -r     name を読み込み専用にします。  これ以降、代入文を用いて値を代入したり  unset
                     したりできなくなります。
              -tnametrace  属性を与えます。  trace 属性を付与された関数は DEBUGRETURN のトラップを 呼び出したシェルから受け継ぎます trace  属性は変数には意
                     味を持ちません。
              -u     変数に値が代入されると、全ての小文字は大文字に変換されます。  小文字属性は無
                     効になります。
              -x     name に印を付け、 これ以降に実行するコマンドに環境経由でエクスポートします。

              `-' ではなく `+' を使うと属性を消します。 ただし例外として、+a を使って配列変数を破
              棄することはできず、  +r  を使って読み込み専用属性を消すことはできません。 関数内で
              使った場合、 -g オプションが与えられなかった場合、 local コマンドを使った場合と同様
              に  name  はローカル変数となります。  変数名に  =value  が続く場合、 変数の値として
              value が設定されます。  返り値は基本的には  0  ですが、不正なオプションに出会った場
              合、  ``-f foo=bar'', を使って関数を定義しようとした場合、 読み込み専用の変数に代入
              しようとした場合、 複合代入構文を使わずに配列変数に値を代入しようとした場合 (前述の
              配列  を参照)、name のいずれかが正しいシェル変数名でない場合、 読み込み専用変数の読
              み込み専用属性を無効にしようとした場合、   配列変数の配列属性を無効にしようとした場
              合、 存在しない関数を -f オプションで表示しようとした場合は除きます。

       dirs [+n] [-n] [-clpv]
              オプションがないときは、   現在記憶しているディレクトリのリストが表示されます。  デ
              フォルトでは、全てのディレクトリ名は空白で区切って 1 行で表示されます。  ディレクト
              リは pushd コマンドによってリストに追加されます。 popd コマンドはリストからエントリ
              を削除します。
              +n     オプションなしで dirs を起動したときに表示されるリストの、 左から数えて n 番
                     目のエントリを表示します。 エントリは 0 から始まります。
              -n     オプションなしで dirs を起動したときに表示されるリストの、 右から数えて n 番
                     目のエントリを表示します。 エントリは 0 から始まります。
              -c     全てのエントリを削除し、ディレクトリスタックをクリアします。
              -l     長い形式のリスト表示を行います。 デフォルトのリスト表示フォーマットでは、 チ
                     ルダを使ってホームディレクトリを表します。
              -p     1 行に 1 エントリの形でディレクトリスタックを出力します。
              -v     1 行に 1 エントリの形でディレクトリスタックを出力します。 各エントリの前には
                     スタック内での番号が表示されます。

              不正なオプションが与えられた場合とインデックス n がディレクトリスタックの末尾を越え
              ている場合を除き、 返り値は 0 となります。

       disown [-ar] [-h] [jobspec ...]
              オプションなしの場合には、それぞれの jobspec がアクティブなジョブのテーブルから削除
              されます。 jobspec がなく、かつ -a オプションも -r オプションも  与えられていない場
              合には、カレントジョブが使われます。     -h    オプションが与えられている場合、どの
              jobspec  もテーブルから削除されず、  シェルが  SIGHUP  を受け取ってもそのジョブには
              SIGHUP  が送られないように印が付けられます。 jobspec が与えられていない場合、 -a オ
              プションは全てのジョブを削除するか 全てのジョブに印を付けるという意味  となります。
              jobspec 引き数なしで -r オプションを指定すると、 実行中のジョブだけが操作の対象とな
              ります。 jobspec が有効なジョブを指定していない場合を除き、返り値は 0 となります。

       echo [-neE] [arg ...]
              arg を空白で区切って出力し、最後に改行を出力します。 終了ステータスは常に 0  です。
              -n  が指定された場合、最後の改行は出力されません。 -e オプションを指定した場合、 以
              下に示す、バックスラッシュのエスケープ文字が解釈されるようになります。 -E  オプショ
              ンを指定すると、   デフォルトでこのようなエスケープ文字が解釈されるシステムであって
              も、 エスケープ文字が解釈されないようになります。 xpg_echo シェルオプションを用いる
              と、 echo がこれらのエスケープ文字を展開するかどうかの デフォルト動作を動的に決定で
              きます。 echo--  をオプションの終わりと解釈しません。  echo  は以下のエスケープ
              シーケンスを解釈します:
              \a     警告 (ベル)
              \b     バックスペース
              \c     行末に改行を付けない
              \e
              \E     エスケープ文字
              \f     フォームフィード
              \n     改行
              \r     復帰 (carriage return)
              \t     水平タブ
              \v     垂直タブ
              \\     バックスラッシュ
              \0nnn  8 進値で nnn である 8 ビット文字 (8 進数で 0〜3 桁)。
              \xHH   16 進値が HH である 8 ビット文字 (16 進で 1〜2 桁)。
              \uHHHH 16 進値が HHHH であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜4 桁)。
              \UHHHHHHHH
                     16 進値が HHHHHHHH であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜8 桁)。

       enable [-a] [-dnps] [-f filename] [name ...]
              組み込みコマンドの有効/無効を設定します。  シェルは通常はディスクコマンドの前に組み
              込みコマンドを探しますが、 組み込みコマンドを無効にすると、  シェルの組み込みコマン
              ドと同じ名前を持つディスクコマンドを、   完全なパス名を指定しなくても実行できます。
              -n を用いると、それぞれの name は無効となります。 それ以外の場合には、name は有効と
              なります。 例えば、シェル組み込みのものでなく PATH 上にある test バイナリを使うには
              ``enable -n test''.  を実行します。 -f オプションは新しい組み込みコマンド name を共
              有オブジェクト filename からロードするという意味です。 これは動的ロードをサポートし
              ているシステムで使えます。 -d オプションは、以前に -f  オプションでロードした組み込
              みコマンドを削除します。 引き数 name が与えられなかった場合や、 -p オプションが与え
              られた場合、 シェルの組み込みコマンドのリストが表示されます。  他にオプション引き数
              が指定されていない場合には、 有効になっているシェル組み込みコマンド全てからなるリス
              トが表示されます。 -n  を与えると、無効にされている組み込みコマンドだけが出力されま
              す。 -a を与えると、 それぞれ有効かどうかの表示付きで全ての組み込みコマンドが出力さ
              れます。 -s を与えると、出力されるのは POSIX の特殊組み込みコマンドだけに制限されま
              す。 name がシェル組み込みコマンドでない場合と、 共有オブジェクトからの新しい組み込
              みコマンドのロードに失敗した場合を除き、 返り値は 0 となります。

       eval [arg ...]
              arg を読み込み、1 つのコマンドに結合し、 このコマンドを読み込んで実行します。  その
              終了ステータスが  eval の値として返されます。 args がない場合や空の引き数しかない場
              合には eval は 0 を返します。

       exec [-cl] [-a name] [command [arguments]]
              command が指定されていると、シェルはこのコマンドに置き換えられます。 新しいプロセス
              は生成されません。  argumentscommand に対する引き数となります。 -l オプションを
              与えると、シェルは command に渡す 0  番目のオプションの先頭にダッシュを設定します。
              これは  login(1)  が行う動作です。 -c オプションを与えると、 command は空の環境で実
              行されます。 -a を与えると、シェルは実行するコマンドに 0 番目の引き数として name を
              渡します。何らかの理由で command が実行できない場合には非対話的シェルは終了します。
              ただしシェルオプション execfail  が設定されている場合は終了せず、この場合には偽が返
              されます。  ファイルが実行できない場合には、対話的シェルは偽を返します。 command が
              指定されていない場合、任意のリダイレクトはカレントシェルで効果を持ち、 終了ステータ
              スは 0 となります。 リダイレクトのエラーが起きた場合には、終了ステータスは 1 となり
              ます。

       exit [n]
              ステータス n でシェルを終了させます。 n を省略すると、 終了ステータスは最後に実行し
              たコマンドの終了ステータスとなります。 シェルが終了する前には、 EXIT に対するトラッ
              プが実行されます。

       export [-fn] [name[=word]] ...
       export -p
              指定された name には印が付けられ、 これ以降に実行するコマンドの環境に  自動的にエク
              スポートされるようになります。  -f オプションを与えると、 name は関数を参照します。
              name を与えなかった場合や、  -p  オプションを与えた場合には、  このシェル内でエクス
              ポートされている全ての名前のリストが出力されます。  -n オプションを与えると、指定し
              た変数からエクスポート属性が取り除かれます。  変数名に  =word  が続くと、変数の値に
              word  が設定されます。 不正なオプションがあった場合、 name のいずれかが不正なシェル
              変数名であった場合、   関数でない名前に対して   -f   オプションを与えた場合を除き、
              export は終了ステータス 0 を返します。

       fc [-e ename] [-lnr] [first] [last]
       fc -s [pat=rep] [cmd]
              フィックスコマンド  (Fix Command)。 最初の形式では、 first から last までの範囲のコ
              マンドが履歴リストから選択されます。 firstlast  には文字列か数値を指定します。
              文字列はその文字列で始まる最後のコマンドを表し、 数値は履歴リスト中でのインデックス
              を表します (負の値は現在のコマンド番号からのオフセットとして扱われます)。 last が指
              定されていない場合、リスト表示の場合には 現在のコマンドが last に設定され (したがっ
              て ``fc -l -10'' で最近のコマンド 10 個が出力されます)、それ以外の場合には first が
              設定されます。  first が指定されていなければ、編集の場合には前のコマンドが first に
              設定され、 リスト表示の場合には -16 が設定されます。

              -n オプションを与えるとリスト表示でコマンド番号が付きません。 -r オプションを与える
              とコマンドの順序が逆になります。  -l オプションを与えると、コマンドは標準出力にリス
              ト表示されます。     それ以外の場合には、これらのコマンドが書かれたファイルに対し、
              ename   で指定したエディタが起動されます。   ename   が与えられていない場合は、変数
              FCEDIT の値が使われ、 FCEDIT も設定されていない場合には  EDITOR  の値が使われます。
              どちらの変数も設定されていなければ、 vi が使われます。 編集が終了すると、編集後のコ
              マンドがエコー表示され、実行されます。

              2 番目の形式では、pat の部分をそれぞれ rep で置き換えてから command  が再実行されま
              す。  これを利用している便利なエイリアスの例として ``r="fc -s"'', があります。 これ
              を用いると  ``r  cc''  と入力すれば  ``cc''  で始まる最も新しいコマンドを実行でき、
              ``r'' と入力すれば直前のコマンドを再実行できます。

              最初の形式を用いた場合、不正なオプションがあるか、 first または last が履歴行の範囲
              外を指定していなければ、返り値は 0 となります。 -e オプションが与えられた場合、  返
              り値は最後に実行されたコマンドの返り値となります。 ただし、コマンドの一時ファイルで
              エラーが起きた場合には返り値は偽 (失敗) となります。 2 番目の形式を用いた場合、  終
              了ステータスは再実行されたコマンドの終了ステータスとなります。  ただし、 cmd が有効
              な履歴行を指定していない場合は、 fc は偽 (失敗) を返します。

       fg [jobspec]
              jobspec の実行をフォアグラウンドで再開し、これをカレントジョブとします。 jobspec が
              ない場合、シェルが記録しているカレントジョブが使われます。 返り値はフォアグラウンド
              で再開されたコマンドの返り値ですが、   ジョブ制御が無効であるときに実行した場合や、
              ジョブ制御が有効であっても  jobspec が有効なジョブを指定していない場合や jobspec が
              ジョブ制御なしで実行したジョブを指定している場合には偽となります。

       getopts optstring name [args]
              getopts は位置パラメータを解釈するシェルの処理で使います。 optstring は識別の対象で
              あるオプション文字列です。  ある文字の後にコロンがある場合、 そのオプションは引き数
              を一つ取ることが期待されます。 引き数は空白でオプション文字と区切られていなければな
              りません。   コロンと疑問符はオプション文字として使えません。  呼び出されるたびに、
              getopts は次に見つかったオプションをシェル変数 name に格納し (name が存在しなければ
              初期化を行います)、  次に処理される引き数のインデックスを変数 OPTIND に格納します。
              OPTIND はシェルまたはシェルスクリプトが呼び出されるたびに 1 に初期化されます。 オプ
              ションが引き数を必要とする場合には、  getopts  はその引き数を変数 OPTARG に格納しま
              す。 シェルが OPTIND を自動的に再設定することはありません。 1  つのシェルが呼び出さ
              れている間に別のパラメータの組み合わせを使う場合には、  再度 getopts を呼び出す前に
              手動で OPTIND の再設定を行わなければなりません。

              オプションの終わりに到達すると、 getopts は 0 より大きい返り値で終了します。 OPTIND
              にはオプションでない最初の引き数のインデックスが設定され、 name には ? が設定されま
              す。

              getopts は通常位置パラメータを展開しますが、他の引き数が args  に指定されている場合
              には、 getopts は位置パラメータでなくこれらの引き数を解釈対象とします。

              getopts  は  2  通りの方法でエラーを報告します。 optstring の最初の文字がコロンなら
              ば、 静かな (silent) エラー報告が行われます。  通常の動作では、不正なオプションがあ
              る場合や    オプションの引き数が足りない場合に診断メッセージが出力されます。   変数
              OPTERR に 0 が設定されている場合、 optstring の最初の文字がコロンでない場合であって
              も、 エラーメッセージは全く出力されません。

              不正なオプションがあった場合、  getopts  は ? を name に設定します。 さらに、静かな
              モードでない場合にはエラーメッセージが出力され、 OPTARG が削除されます。 getopts が
              静かなモードであれば、見つかったオプション文字は  OPTARG に設定され、診断メッセージ
              は出力されません。

              必要な引き数が見つからず、かつ getopts が静かなモードでない場合には、疑問符 (?)  が
              name  に設定され、 OPTARG が削除され、診断メッセージが出力されます。 getopts が静か
              なモードならば、コロン (:) が name に設定され、 OPTARG には見つかったオプション文字
              が設定されます。

              (指定の有無に関係なく)  オプションが見つかった場合、  getopts は真を返します。 オプ
              ションの最後に到達した場合や、エラーが起きた場合には、 偽を返します。

       hash [-lr] [-p filename] [-dt] [name]
              hash が実行される度に、 $PATH に含まれるディレクトリの検索を行ってコマンド name  の
              完全なパス名を調べ、  その結果を記憶します。 それまでに記憶されていたパス名は捨てら
              れます。 -p オプションが指定されると、パス検索は実行されず、 filename  がそのコマン
              ドの完全なファイル名として使われます。  -r オプションを与えると、シェルは記憶してい
              るパス名を全て忘れます。 -d オプションを与えると、シェルは各 name  について記憶して
              いるパス名を忘れます。 -t オプションを与えると、name に対応する完全なファイル名が表
              示されます。 -t に複数の name 引き数が指定された場合、 記憶されている完全なファイル
              名の前に  name が表示されます。 -l オプションを与えると、入力として再利用できる形で
              出力されます。 引き数が与えられていない場合や、-l だけが与えられた場合は、 記憶して
              いるコマンドに関する情報が出力されます。  name が見つからない場合と不正なオプション
              が与えられた場合を除き、 返却ステータスは真となります。

       help [-dms] [pattern]
              組み込みコマンドのヘルプ情報を表示します。 pattern が指定された場合には、  helppattern にマッチする全てのコマンドに関する詳しいヘルプを出力します。 指定されなかっ
              た場合には、 全ての組み込みコマンドと制御構造についての説明が出力されます。
              -d     pattern それぞれの短い説明を表示します。
              -m     pattern それぞれの説明を manpage 風のフォーマットで表示します。
              -s     pattern それぞれの短い書式のみを表示します。

              pattern にマッチするコマンドが全くない場合を除き、返却ステータスは 0 です。

       history [n]
       history -c
       history -d offset
       history -anrw [filename]
       history -p arg [arg ...]
       history -s arg [arg ...]
              オプションがない場合には、行番号付きでコマンド履歴を表示します。 * 付きでリスト表示
              されている行は変更された行です。 引き数 n を指定すると、最新の n 行だけがリスト表示
              されます。 シェル変数 HISTTIMEFORMAT に空でない値が設定されると、履歴エントリを表示
              するときに  タイムスタンプを表示するための  strftime(3) の書式文字列 として使われま
              す。 タイムスタンプと履歴行の間には空白は表示されません。 filename が指定されている
              場合、  履歴ファイルの名前として使われます。 指定されていない場合には HISTFILE の値
              が使われます。指定された場合、オプションは以下の意味を持ちます:
              -c     全てのエントリを削除し、履歴リストをクリアします。
              -d offset
                     offset 番目にある履歴エントリを削除します。
              -a     「新しい」履歴行 (bash の現在のセッションの開始以降に入力された履歴行)  を履
                     歴ファイルに追加します。
              -n     まだ履歴ファイルから読み込んでいない履歴行を    現在の履歴リストに読み込みま
                     す。 読み込まれるのは、bash の現在のセッションの開始以降に  履歴ファイルに追
                     加された行です。
              -r     履歴ファイルの内容を読み込み、これらを現在の履歴として用います。
              -w     現在の履歴を履歴ファイルに書き込みます。履歴ファイルの内容は上書きされます。
              -p     後に続く args に対して履歴置換を行い、 その結果を標準出力に表示します。 この
                     結果は履歴リストには格納されません。  通常の履歴展開が行われないようにするた
                     め、 arg はそれぞれクォートしなければなりません。
              -s     args  を 1 つのエントリとして履歴リストに格納します。 履歴リストの最後のコマ
                     ンドは、 args が追加される前に削除されます。

              HISTTIMEFORMAT 変数が設定されていると、履歴エントリのタイムスタンプの情報は、  履歴
              のコメント文字を付けて履歴ファイルに書き込まれます。     履歴ファイルを読み込むとき
              に、履歴のコメント文字で始まり直後に数字が続く行は、 直前の履歴行のタイムスタンプと
              して解釈されます。  不正なオプションがある場合、 履歴ファイルの読み書き時にエラーが
              起きた場合、 -d オプションの引き数として不正な offset の値が与えられた場合、 -p  オ
              プションの引き数として与えられた履歴展開が失敗した場合を除き、  返り値は 0 になりま
              す。

       jobs [-lnprs] [ jobspec ... ]
       jobs -x command [ args ... ]
              最初の形式を実行すると、アクティブなジョブがリスト表示されます。 オプションは以下の
              意味を持ちます:
              -l     通常の情報に加えて、プロセス ID をリスト表示します。
              -n     ユーザがステータスを最後に通知されて以降に、  ステータスの変更があったジョブ
                     に関する情報だけを表示します。
              -p     そのジョブが属するプロセスグループのリーダーのプロセス ID だけを表示します。
              -r     実行中のジョブだけを出力します。
              -s     停止中のジョブだけを出力します。

              jobspec  が指定された場合、  そのジョブに関する情報だけが出力されます。  不正なオプ
              ションがある場合や、不正な  jobspec  が与えられた場合を除き、返却ステータスは  0 で
              す。

              -x オプションが指定されると、 jobscommandargs 中の jobspec を対応するプロセ
              スのグループ ID で置き換え、 commandargs を与えて実行し、その終了ステータスを返
              します。

       kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
       kill -l [sigspec | exit_status]
              sigspec または signum で指定されたシグナルを、 pid または jobspec  で指定されたプロ
              セスに送ります。  sigspec  は、  SIGKILL  のようなシグナル名  (先頭の  SIG は省略可
              能)、またはシグナルの番号です。 signum はシグナルの番号です。 sigspec  が存在しない
              場合には、  SIGTERM が指定されたものとします。 引き数に -l を与えるとシグナル名がリ
              スト表示されます。 -l と同時に引き数を与えると、 引き数に対応するシグナルの名前がリ
              スト表示され、  返却ステータスは  0 となります。 -l に対する引き数 exit_status は、
              シグナル番号、またはシグナルによって終了させられた プロセスの終了ステータスを指定す
              る数です。  少なくとも  1 つのシグナルを正常に送れた場合、 kill は真を返します。 エ
              ラーが起きた場合や不正なオプションがあった場合には、 kill は偽を返します。

       let arg [arg ...]
              各 arg は評価を行う算術式です (算術式展開 を参照)。 最後の arg  を評価した結果が  0
              であれば、 let は 1 を返します。 それ以外の場合には 0 が返されます。

       local [option] [name[=value] ...]
              それぞれの引き数に対して name という名前のローカル変数が生成され、 value が代入され
              ます。 option には、  declare  コマンドに使えるオプションが全て使えます。  関数内で
              local  を使った場合、この変数 name の可視スコープは、この関数とこの関数の子に制限さ
              れます。 オペランドがない場合、 local  はローカル変数の一覧を標準出力に出力します。
              関数の内部以外で  local  を使うとエラーになります。  local が関数の外部で使われた場
              合、 不正な name が与えられた場合、  name  が読み取り専用の変数であった場合以外は、
              local の返却ステータスは 0 となります。

       logout ログインシェルを終了します。

       mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
       readarray  [-n  count]  [-O  origin]  [-s  count]  [-t] [-u fd] [-C callback] [-c quantum]
       [array]
              標準入力の各行を配列変数  array  に読み込みます。   -u   オプションが指定されたとき
              は、ファイル・ディスクリプター  fd  から読み込みます。  変数 MAPFILE がデフォルトの
              array です。 オプションが指定された場合、以下の意味を持ちます:
              -n     最大 count 行をコピーします。count が 0 であれば、全ての行をコピーします。
              -O     array のインデックス origin から代入を始めます。デフォルトのインデックスは 0
                     です。
              -s     最初の count 行を読み捨てます。
              -t     読み込んだ各行の末尾にある改行文字を削除します。
              -u     標準入力の代わりにファイル・ディスクリプター fd から行を読み込みます。
              -C     quantum   行が読み込まれるごとに   callback   を評価します。-c  オプションで
                     quantum を指定します。
              -c     callback を呼び出す間隔の行数を指定します。

              -c なしで -C が指定されたとき、デフォルトの間隔は 5000 です。 callback が評価される
              とき、  次に代入される配列要素のインデックスと、 その要素に代入される行が、引き数と
              して与えられます。 callback は、行が読み込まれてから 配列の要素に代入されるまでの間
              に評価されます。

              始点が明示的に指定されない場合、mapfile は値を代入する前に array をクリアします。

              mapfile  は、 不正なオプションやオプション引き数が指定された場合や、 array が不正か
              代入できない場合や、 array がインデックスによる配列でない場合でなければ、  成功の状
              態を返します。

       popd [-n] [+n] [-n]
              ディレクトリスタックからエントリを削除します。 引き数がない場合には、スタック先頭の
              ディレクトリが削除され、 新しく先頭となったディレクトリへの cd が実行されます。  引
              き数が指定された場合には、これは以下の意味を持ちます:
              -n     スタックからディレクトリを削除する際に、    通常のディレクトリ変更を行いませ
                     ん。 したがって、スタックだけが操作されます。
              +n     dirs で表示されるリストの左から数えて n 番目のエントリを削除します。  エント
                     リは  0  から数えます。例えば、  ``popd  +0'' は最初のディレクトリを削除し、
                     ``popd +1'' は 2 番目のディレクトリを削除します。
              -n     dirs で表示されるリストの右から数えて n 番目のエントリを削除します。  エント
                     リは  0  から数えます。例えば、  ``popd  -0'' は最後のディレクトリを削除し、
                     ``popd -1'' は最後の 1 つ前のディレクトリを削除します。

              popd コマンドが成功した場合、 dirs も実行され、返却ステータスは 0 となります。 popd
              が偽を返すのは、不正なオプションがあった場合、     ディレクトリスタックが空の場合、
              ディレクトリスタックの存在しないエントリが指定された場合、 ディレクトリ変更に失敗し
              た場合です。

       printf [-v var] format [arguments]
              arguments  を整形して標準出力に書き出します。  フォーマットは format で制御します。
              -v オプションが与えられると、標準出力に書き出す代わりに、 変数 var に代入されます。

              format は 3 つのタイプのオブジェクトを含む文字列です。 3 つのオブジェクトとは、普通
              の文字  (そのまま標準出力にコピーされる)、 文字エスケープシーケンス (変換されて標準
              出力にコピーされる)、 表示フォーマット指定 (format の後に続く各引き数 argument の表
              示を行う)、です。  printf(1) 標準のフォーマット指定以外に、以下の拡張フォーマットが
              使えます。
              %b     printf は対応する argument 中の バックスラッシュのエスケープシーケンスを展開
                     します。  ただし、\c  で出力を終了し、\',  \", \? のバックスラッシュは削られ
                     ず、 \0 で始まる 8 進数のエスケープシーケンスは 4 桁までです。
              %q     printf は対応する argument  をシェルの入力として再利用できるフォーマットで出
                     力します。
              %(datefmt)T
                     printfdatefmtstrftime(3)  の書式文字列として使って日付と時刻の文字列
                     を出力します。 対応する argument は、紀元 (1970年 1 月 1  日  00:00:00  UTC)
                     からの秒数を表す整数値です。argument には 2 つの特別な値が使えます。 -1 は現
                     在時刻を表します。-2 はシェルが起動した時刻を表します。

              文字列でないフォーマット指定に対する引き数は、C の定数として扱われます。 ただし、先
              頭のプラスとマイナスの記号は許されます。 また、先頭の文字がシングルクォートやダブル
              クォートであれば、 続く文字の ASCII コードの値が引き数の値となります。

              format は必要に応じて再利用され、 全ての arguments を処理します。  与えられたよりも
              多くの  argumentsformat が必要とする場合、余分のフォーマット指定は、 0 と空文字
              列のうち、適切な方が指定されたかのように動作します。    成功した場合の返り値は    0
              で、失敗した場合の返り値は 0 以外です。

       pushd [-n] [+n] [-n]
       pushd [-n] [dir]
              ディレクトリをディレクトリのスタックに追加するか、   スタックをローテートさせます。
              このとき、新しいスタックの最も上にあるものを   カレントの作業ディレクトリにします。
              引き数を与えなければ、  一番上の  2  つのディレクトリを交換し、0  を返します。 ただ
              し、ディレクトリスタックが空の場合を除きます。 引き数を与えた場合には、以下の意味を
              持ちます:
              -n     ディレクトリをスタックに追加したときに、    通常のディレクトリ変更を行いませ
                     ん。 したがって、スタックだけが操作されます。
              +n     スタックをローテートさせ、n  番目のディレクトリを一番上にします。   このとき
                     dirs が表示するリストは左から数え始め、その左端は 0 となります。
              -n     スタックをローテートさせ、n   番目のディレクトリを一番上にします。  このとき
                     dirs が表示するリストは右から数え始め、その右端は 0 となります。
              dir    dir をディレクトリスタックの一番上に追加し、  そのディレクトリを新しいカレン
                     トの作業ディレクトリにします。

              pushd  コマンドが成功すると、  dirs コマンドも実行されます。 2 番目の形式を使った場
              合、 dir への cd が失敗しなければ、 pushd は 0 を返します。  最初の形式を使った場合
              には、  ディレクトリスタックが空の場合、 ディレクトリスタックの存在しない要素が指定
              された場合、 指定された新しいカレントディレクトリへの  ディレクトリ変更が失敗した場
              合以外は、 pushd は基本的には 0 を返します。

       pwd [-LP]
              現在の作業ディレクトリの絶対パス名を出力します。    -P   オプションが指定された場合
              や、組み込みコマンド set-o physical オプションが有効になっている場合には、 シン
              ボリックリンクを展開したパス名が出力されます。 -L オプションを使うと、 出力されるパ
              ス名にはシンボリックリンクが含まれているかもしれません。 カレントディレクトリの名前
              を読む際にエラーが起きたり、 不正なオプションが指定されたりしなければ、返却ステータ
              スは 0 となります。

       read [-ers] [-a aname] [-d delim] [-i text]  [-n  nchars]  [-N  nchars]  [-p  prompt]  [-t
       timeout] [-u fd] [name ...]
              標準入力、  または  -u オプションの引き数として指定されたファイル・ディスクリプター
              fd から 1 行を読み込み、最初の単語を最初の name に代入し、2 番目の単語を  2  番目の
              name   に代入します。以降も同様です。  余った単語とそれらの間の区切り文字は、最後の
              name に代入されます。  name  よりも標準入力から読み込んだ単語の方が少ない場合には、
              余っている name には空文字列が値として代入されます。 IFS 中の文字が、行を単語に分割
              するために使われます。 バックスラッシュ文字 (\) を使うと、 次に読み込んだ文字の特殊
              な意味を消したり、行を連結したりできます。 オプションが与えられていれば、以下の意味
              を持ちます:
              -a aname
                     単語を配列変数 aname にインデックス順に代入します。インデックスは 0 から始ま
                     ります。 新しい値が代入される前に aname は削除されます。他の name 引き数は無
                     視されます。
              -d delim
                     改行ではなく、delim の最初の文字が、入力行を終了するために使われます。
              -e     標準入力を端末から読み込む場合、 readline (前述の READLINE ライブラリ のセク
                     ションを参照) を使って行を取得します。 readline は現在の (行編集がそれまで有
                     効になっていなければデフォルトの)  編集設定を使います。
              -i text
                     行を取得するのに  readline  が使われるとき、入力を開始する前に編集バッファに
                     text が置かれます。
              -n nchars
                     組み込みコマンド  read は、 入力行全体が読み込まれるのを待たず、 nchars 文字
                     を読み込んだ時点で戻ります。 ただし、nchars 文字が読み込まれる前に区切り文字
                     が現われたときは、 区切り文字を優先します。
              -N nchars
                     入力行全体が読み込まれるのを待たず、 nchars 文字を読み込んだ時点で戻ります。
                     ただし、入力に EOF が現れたときや、 read  がタイムアウトになったときを除きま
                     す。  入力に区切り文字が現れても特別扱いはせず、 nchars 文字を読み込むまでは
                     read が戻ることはありません。
              -p prompt
                     入力を読み込もうとする前に標準エラー出力に prompt を表示します。  末尾に改行
                     は付きません。  プロンプトが表示されるのは、入力を端末から読み込む場合だけで
                     す。
              -r     バックスラッシュはエスケープ文字として作用しません。  バックスラッシュは行の
                     一部とみなされます。 特に、バックスラッシュと改行の組み合わせを使って 複数の
                     行を接続することはできません。
              -s     静かな (silent) モード。端末に入力が行われても、文字はエコーされません。
              -t timeout
                     入力行全体が timeout  秒以内で読み込まれない場合、  read  をタイムアウトさせ
                     て、失敗の状態を返します。 timeout は小数部を持つ十進数でもかまいません。 こ
                     のオプションは、 read が入力を端末やパイプ、その他の特殊ファイルから  読み込
                     んでいる場合にのみ効果があります。  通常のファイルから読み込んでいる場合には
                     影響ありません。 timeout が 0 のときは、read  は指定したファイル・ディスクリ
                     プター  から読み込める状態であれば成功の状態を返し、そうでなければ失敗の状態
                     を返します。 タイムアウト時間を超えた場合、終了ステータスは 128 より大きい値
                     になります。
              -u fd  ファイル・ディスクリプター fd から入力を読み込みます。

              name が全く与えられていない場合、読み込まれた行は変数 REPLY に代入されます。 ファイ
              ル末尾に到達した場合、  read  がタイムアウトした場合  (この場合には終了ステータスは
              128 より大きい値になります)、 -u の引き数として不正なファイル・ディスクリプターが指
              定した場合以外は、 終了コードは 0 です。

       readonly [-aAf] [-p] [name[=word] ...]
              指定された name に読み込み専用の印を付けます。 それ以降は、これらの name の値を変更
              することはできません。 -f オプションを与えた場合、name に対応する関数に同様の印が付
              きます。 -a オプションを与えると、配列変数だけが対象となります。 -A  オプションを与
              えると、連想配列変数だけが対象となります。 両方のオプションを与えると、 -A が優先さ
              れます。 name  引き数が全く与えられてない場合、または  -p  オプションが与えられた場
              合、読み込み専用の名前全ての一覧が出力されます。 ほかのオプションを合わせて指定する
              と、出力を読み込み専用の名前の一部に限定します。 -p オプションを使うと、 入力として
              再利用できるようなフォーマットで出力が行われます。  変数名に =word が続くと、変数の
              値に word が設定されます。 返却ステータスは基本的に 0  ですが、  無効なオプションが
              あった場合、  name のいずれかが有効なシェル変数名でなかった場合、 -f オプションの際
              に関数でない name を与えた場合は除きます。

       return [n]
              指定した返り値 n で関数を終了させます。 n を省略すると、返却ステータスは 関数内で最
              後に実行したコマンドの返却ステータスになります。   関数の外側で使われているが、   .
              (source) コマンドによるスクリプトの実行中である場合、  シェルはそのスクリプトの実行
              を止め、  n またはスクリプト内で最後に実行されたコマンドの終了ステータスを スクリプ
              トの終了ステータスとして返します。 関数の外側で .  によるスクリプトの実行中以外に使
              われた場合、   返却ステータスは偽となります。  関数やスクリプトから実行が戻る前に、
              RETURN トラップ に設定されたコマンドが実行されます。

       set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
       set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]
              オプションなしの場合は、シェル変数全ての名前と値の組が表示されます。 表示は、現在設
              定されている変数を設定や再設定をする入力   として再利用できるフォーマットで行われま
              す。 読み込み専用の変数は再設定できません。 posix モード ではシェル変数だけが表示さ
              れます。  出力は現在のロケールに従ってソートされます。 オプションが指定されている場
              合、  オプションはシェルの属性を設定または解除します。   オプションが処理された後に
              残っている引き数があれば、 これは位置パラメータの値として扱われ、 $1, $2, ... $n の
              順に代入されます。 オプションが指定されていれば、以下の意味を持ちます:
              -a      値を変更したり新規に設定したりした変数および関数が、  (これ以降に実行するコ
                      マンドの) 環境として 自動的にエクスポートされます。
              -b      終了したバックグラウンドジョブのステータス報告を、 次のプライマリプロンプト
                      の前ではなく、即座に行います。 これはジョブ制御が有効な場合に限り有効です。
              -e      パイプライン (1 つの 単純なコマンド からなるものでもよい)、  括弧で囲まれた
                      サブシェル  のコマンド、 ブレース (前述の シェルの文法 を参照) で囲まれたコ
                      マンドのリストの一部として実行されたコマンドの 1 つ が 0 でないステータスで
                      終了した場合、即座に終了します。     ただし、失敗したコマンドが、キーワード
                      while または until の直後のコマンドの一部である場合、予約語 if または  elif
                      に続く条件式の一部である場合、  && または || によるコマンドのリストの一部で
                      ある場合 (最後の &&|| の後のコマンドを除く)、  パイプラインの中の最後の
                      コマンド以外である、  コマンドの返り値が ! で反転されている場合、のいずれか
                      であれば、シェルは終了しません。    ERR    に対するトラップが設定されていれ
                      ば、シェルが終了する前に実行されます。 このオプションはシェルの環境と各サブ
                      シェルの環境に別々に適用され (前述の コマンド実行環境 を参照)、  サブシェル
                      はサブシェル内の全てのコマンドを実行する前に終了するかもしれません。
              -f      パス名展開を無効にします。
              -h      実行時に参照できるようにコマンドの位置を記憶します。 これはデフォルトで有効
                      になっています。
              -k      コマンド名の前にある代入文だけでなく、   引数として指定された全て代入文も、
                      そのコマンドに対する環境変数に追加されます。
              -m      監視モード。ジョブ制御は有効になります。ジョブ制御  (前述の ジョブ制御 セク
                      ションを参照) をサポートしているシステム上の対話的シェルでは、 このオプショ
                      ンはデフォルトで有効です。 別のプロセスグループで実行されたバックグラウンド
                      プロセスと、 これらの終了ステータスが書かれた行が、プロセスの終了時に表示さ
                      れます。
              -n      コマンドを読み込みますが実行はしません。 これを使うとシェルスクリプトの文法
                      エラーをチェックできます。 このオプションは対話的シェルでは無視されます。
              -o option-name
                      option-name には、以下のいずれかを指定できます:
                      allexport
                              -a と同じです。
                      braceexpand
                              -B と同じです。
                      emacs   emacs 形式のコマンド行編集インタフェースを使います。 これはシェルが
                              対話的な場合には、デフォルトで有効です。  ただし、 --noediting オプ
                              ション付きでシェルを実行した場合は除きます。 これは、read -e での編
                              集インタフェースにも影響します。
                      errexit -e と同じです。
                      errtrace
                              -E と同じです。
                      functrace
                              -T と同じです。
                      hashall -h と同じです。
                      histexpand
                              -H と同じです。
                      history コマンド履歴を有効にします。コマンド履歴については  履歴 セクション
                              で説明しています。 このオプションは、対話的シェルではデフォルトで有
                              効です。
                      ignoreeof
                              シェルコマンドの  ``IGNOREEOF=10'' を実行した場合と同じ効果を持ちま
                              す (前述の シェル変数 を参照)。
                      keyword -k と同じです。
                      monitor -m と同じです。
                      noclobber
                              -C と同じです。
                      noexec  -n と同じです。
                      noglob  -f と同じです。
                      nolog   現在は無視されます。
                      notify  -b と同じです。
                      nounset -u と同じです。
                      onecmd  -t と同じです。
                      physical
                              -P と同じです。
                      pipefail
                              設定されている場合、パイプラインの返り値は、 0 以外のステータスで終
                              了した最後の (一番右の) コマンドの値になります。 パイプラインの全て
                              のコマンドが成功の状態で終了すると  0  になります。  このオプション
                              は、デフォルトで無効です。
                      posix   bash   の動作のうち、デフォルトの振舞いが   POSIX  標準と異なる部分
                              を、POSIX 標準に準拠するように変更します (posix モード)。
                      privileged
                              -p と同じです。
                      verbose -v と同じです。
                      vi      vi 形式のコマンド行編集インタフェースを使います。  これは、read  -e
                              での編集インタフェースにも影響します。
                      xtrace  -x と同じです。
                      option-name  なしで -o オプションを与えた場合、現在のオプションが出力されま
                      す。 option-name なしで +o オプションを与えた場合、現在のオプション設定を再
                      生成する set コマンドの列が標準出力に出力されます。
              -p      特権  (privileged)  モードを有効にします。 このモードでは $ENV$BASH_ENV
                      ファイルは処理されず、シェル関数は環境から継承されず、 SHELLOPTS, BASHOPTS,
                      CDPATH,  GLOBIGNORE  環境変数は定義されていても無視されます。  実ユーザ (グ
                      ループ) ID と異なる実効ユーザ (グループ) ID でシェルが起動され、 かつ -p オ
                      プションが与えられていない場合、 これらの動作が行われ、実効ユーザ ID には実
                      ユーザ ID が設定されます。 起動時に  -p  オプションが与えられた場合、  実効
                      ユーザ ID は再設定されません。 このオプションを無効にすると、 実効ユーザ ID
                      と実効グループ ID には、 実ユーザ ID と 実グループ ID が設定されます。
              -t      コマンドを 1 つ読み込み、実行してから終了します。
              -u      パラメータ展開の実行中に、特殊パラメータ "@" と "*" 以外で 設定されていない
                      変数やパラメータをエラーとして扱います。 設定されていない変数やパラメータを
                      展開しようとした場合、 シェルはエラーメッセージを出力します。  シェルが対話
                      的でなければ、0 でないステータスで終了します。
              -v      シェルの入力行を、読み込んだ際に表示します。
              -x      単純なコマンドfor  コマンド、case コマンド、 select コマンド、算術 for コ
                      マンドをそれぞれ展開した後、 PS4 を展開した値を表示し、その後にそのコマンド
                      と展開した引き数や、 結び付いた単語のリストを表示します。
              -B      シェルはブレース展開  (前述の  ブレース展開  を参照) を実行します。これはデ
                      フォルトで有効です。
              -C      設定されている場合、 bash はリダイレクト演算子 >, >&, <> で既存のファイルを
                      上書きしません。  上書きができるのは、リダイレクト演算子 >|> の代わりに
                      使ったときです。
              -E      設定されている場合、ERR のトラップは、 シェル関数、コマンド置換、サブシェル
                      環境で実行されるコマンド に継承されます。 通常、このような場面では ERR のト
                      ラップは継承されません。
              -H      ! 形式の履歴置換を有効にします。 このオプションは、シェルが対話的なときには
                      デフォルトで有効です。
              -P      設定されている場合、  cd のような現在の作業ディレクトリを変更するコマンドを
                      実行するときに、  シェルはシンボリックリンクを辿りません。   代わりに物理的
                      ディレクトリ構造が使われます。 デフォルトでは、 bash がカレントディレクトリ
                      を変更するコマンドを実行する際には、   ディレクトリの論理的な接続が辿られま
                      す。
              -T      設定されている場合、DEBUGRETURN のトラップは、 シェル関数、コマンド置
                      換、サブシェル環境で実行されるコマンド に継承されます。  通常、このような場
                      面では DEBUGRETURN のトラップは継承されません。
              --      このオプションの後に引き数が続いていない場合には、 位置パラメータの設定が取
                      り消されます。 引き数が続いている場合には、位置パラメータに arg  が設定され
                      ます。  arg- で始まるものが含まれていても、 オプションではなく位置パラ
                      メータとして扱われます。
              -       オプションの終わりを示します。 残りの arg  は全て位置パラメータに代入されま
                      す。 -x オプションと -v オプションは無効になります。 arg がない場合には、位
                      置パラメータの内容は変化しません。

              特に断らない限り、各オプションはデフォルトで無効になっています。 - の代わりに +  を
              使うと、これらのオプションは無効になります。 オプションはシェルを起動する際の引き数
              としても指定できます。 現在のオプションの集合は、 $- で知ることができます。  不正な
              オプションが無ければ、終了ステータスは必ず真となります。

       shift [n]
              n+1  ... からの位置パラメータの名前を変え、 $1 ... とします。 $# から $#-n+1 までの
              数字で表される パラメータは unset されます。 n は 0 以上 $#  以下の数でなければなり
              ません。  n  が  0  ならば、どのパラメータも変更されません。 n が与えられない場合に
              は、1 が指定されたものとみなされます。 n$# より大きい場合、位置パラメータは変化
              しません。  n$# より大きい場合や 0 より小さい場合には、 返却ステータスは 0 より
              大きい数になります。 それ以外の場合には 0 になります。

       shopt [-pqsu] [-o] [optname ...]
              シェルのオプション動作を制御する変数の値をトグルさせます。 オプションがない場合や、
              -p  オプションが指定されている場合には、 設定可能なオプション全てのリストが表示され
              ます。 表示の際には、それぞれが設定されているかどうかも示されます。  オプションの表
              示は、入力として再利用できるフォーマットで行われます。 その他のオプションは、以下の
              意味を持っています:
              -s     optname をそれぞれ有効にします (設定します)。
              -u     optname をそれぞれ無効にします (設定解除します)。
              -q     通常の出力を止めます (静かなモード)。 返却ステータスは optname  が設定されて
                     いるかどうかを示します。  複数の  optname 引き数と -q が指定されている場合に
                     は、 全ての optnames が有効であるときに返却ステータスが 0 となります。  それ
                     以外のときには、0 でない値となります。
              -o     optname  の値を、組み込みコマンド set-o オプションで定義されているものに
                     制限します。

              引き数 optname なしで -s オプションまたは -u オプションを使った場合、それぞれ設定さ
              れているもの、  または設定されていないものだけに表示が限定されます。 特に断らない限
              り、shopt オプションは デフォルトで無効 (設定解除) になっています。

              オプションをリスト表示したときの返却ステータスは、 全ての optnames が有効になってい
              る場合は  0 となります。 それ以外の場合には 0 でない値となります。 設定または設定取
              り消しのオプションのときには、 optname が不正なシェルオプションでなければ、  返却ス
              テータスは 0 となります。

              shopt オプションのリストを以下に示します:

              autocd  設定されている場合、ディレクトリの名前のコマンド名は、 それが cd コマンドの
                      引き数に指定されたものとして実行されます。 このオプションが使われるのは対話
                      的シェルだけです。
              cdable_vars
                      設定されている場合、組み込みコマンド  cd への引き数でディレクトリでないもの
                      は変数の名前とみなされ、 その値が変更先のディレクトリとなります。
              cdspell 設定されている場合、 cd  コマンドのディレクトリ要素におけるスペルのちょっと
                      した誤りは修正されます。   チェックされる誤りは、文字の入れ替わり・文字の欠
                      け・ 1 文字余分にあることです。  訂正できた場合には、訂正後のファイル名が表
                      示され、  コマンドは続けて実行されます。 このオプションが使われるのは対話的
                      シェルだけです。
              checkhash
                      設定されている場合、 bash はハッシュ表で見つけたコマンドを実行する前に 実際
                      に存在するかどうかをチェックします。   ハッシュされているコマンドが既になく
                      なっている場合、 通常のパス検索が行われます。
              checkjobs
                      設定されている場合、bash は対話的シェルが終了する前に、  停止中のジョブや実
                      行中のジョブの状態を一覧します。   実行中のジョブがあれば、シェルの終了は、
                      間にほかのコマンドを挟まずに 2 回目の終了が試みられるまで延期されます (前述
                      の  ジョブ制御 を参照)。 停止中のジョブがある場合は、シェルは常に終了を延期
                      します。
              checkwinsize
                      設定されている場合、bash はコマンドの実行後に毎回ウィンドウの大きさをチェッ
                      クし、 必要に応じて LINESCOLUMNS の値を更新します。
              cmdhist 設定されている場合、 bash は複数行に分かれているコマンドの全ての行を、 同じ
                      履歴エントリに保存しようとします。 これを使うと、複数行に分かれているコマン
                      ドの再編集が容易になります。
              compat31
                      設定されている場合、  bash は、条件コマンド [[=~ 演算子のクォートされた
                      引き数に関して bash version 3.1 の動作に変更します。
              compat32
                      設定されている場合、 bash は、条件コマンド [[< 演算子と >  演算子による
                      ロケール固有の文字列比較に関して、 version 3.2 の動作に変更します。 bash の
                      bash-4.1 より前のバージョンでは、ASCII コードの照合と  strcmp(3)   を使いま
                      す。  bash-4.1  およびそれ以後のバージョンでは、 現在のロケールの照合順序と
                      strcoll(3)  を使います。
              compat40
                      設定されている場合、 bash は、条件コマンド [[< 演算子と >  演算子による
                      ロケール固有の文字列比較  (前項を参照)   とコマンドリストの解釈の効果に関し
                      て、 version 4.0 の動作に変更します。
              compat41
                      設定されている場合、 bash は posix モードのときに、  ダブルクォートの中のパ
                      ラメータ展開で  シングルクォートを特殊文字として扱います。 シングルクォート
                      は対応が取れている (偶数個) 必要があり、 シングルクォートの間の文字はクォー
                      トされているものとして扱われます。 これは version 4.1 の posix モードの動作
                      です。 bash のデフォルトの動作は前のバージョンのままです。
              dirspell
                      設定されている場合、 bash は 指定されたディレクトリ名が存在しなければ、  単
                      語補完のときにディレクトリ名のスペルの訂正を試みます。
              dotglob 設定されている場合、 bash は `.' で始まるファイル名をパス名展開の結果に含め
                      ます。
              execfail
                      設定されている場合、 組み込みコマンド exec への引き数として指定されたファイ
                      ルが実行できなくても、   対話的でないシェルが終了しません。  対話的シェルは
                      exec に失敗しても終了しません。
              expand_aliases
                      設定されている場合、エイリアスが前述の エイリアス  セクションで説明したよう
                      に展開されます。 このオプションは、対話的なシェルではデフォルトで有効です。
              extdebug
                      設定されている場合、デバッガのための動作が有効になります。
                      1.     組み込みコマンド declare-F オプションが、 引き数で指定された各関
                             数のソースファイル名と行番号を表示します。
                      2.     DEBUG のトラップで実行されたコマンドが 0 以外を返したとき、 次のコマ
                             ンドはスキップされ実行もされません。
                      3.     DEBUG のトラップで実行されたコマンドが 2 を返し、かつ、 シェルがサブ
                             ルーチン (シェル関数や、組み込みコマンドの .source  により実行さ
                             れたシェルスクリプト)  を実行しているとき、return の呼び出しがシミュ
                             レートされます。
                      4.     上記のシェル変数の説明で述べたように、 BASH_ARGCBASH_ARGV が更新
                             されます。
                      5.     関数のトレースが有効になります。 コマンド置換、シェル関数、( command
                             ) で起動されたサブシェルは、 DEBUGRETURN  のトラップを継承しま
                             す。
                      6.     エラーのトレースが有効になります。       コマンド置換、シェル関数、(
                             command ) から起動されたサブシェルは、 ERR のトラップを継承します。
              extglob 設定されている場合、拡張されたパターンマッチング機能が有効になります。 これ
                      については、前述のパス名展開で説明しています。
              extquote
                      設定されている場合、ダブルクォート中の  ${parameter} の展開で、$'string' と
                      $"string" のクォートが機能します。 このオプションは、デフォルトで有効です。
              failglob
                      設定されている場合、パス名展開でパターンがファイル名のマッチに失敗すると、
                      展開エラーになります。
              force_fignore
                      設定されている場合、単語補完において、シェル変数   FIGNORE   で指定されたサ
                      フィックスの単語は無視されます。 無視された単語が唯一の補完候補であったとし
                      ても無視されます。  詳しい説明については、前述の シェル変数FIGNORE の説
                      明を参照してください。 このオプションは、デフォルトで有効です。
              globstar
                      設定されている場合、** というパターンがパス名展開で使われると、 深さ 0 以上
                      のディレクトリやサブディレクトリの全てのファイルにマッチします。  直後に  /
                      が続く場合には、 ディレクトリとサブディレクトリのみにマッチします。
              gnu_errfmt
                      設定されている場合、シェルのエラーメッセージは GNU 標準のエラーメッセージの
                      形式で出力されます。
              histappend
                      設定されている場合、シェルの終了時に変数  HISTFILE の値で指定しているファイ
                      ルに履歴リストが追加されます。 ファイルへの上書きは行われなくなります。
              histreedit
                      この変数が設定されており、かつ readline  が使われている場合、ユーザは失敗し
                      た履歴置換を再編集できます。
              histverify
                      この変数が設定されており、かつ  readline が使われている場合、履歴置換の結果
                      は即座にはシェルのパーザに渡されません。 その代わり、結果として得られた行は
                      readline の編集バッファに読み込まれ、さらに修正できます。
              hostcomplete
                      この変数が設定されており、かつ  readline が使われている場合、bash@ を含
                      む単語を補完するときにホスト名補完を実行しようとします (前述の READLINE  
                      イブラリ のセクションにおける 補完 を参照)。 これはデフォルトで有効になって
                      います。
              huponexit
                      設定されている場合、bash は対話的なログインシェルを終了するときに、  全ての
                      ジョブに SIGHUP を送ります。
              interactive_comments
                      設定されている場合、 # で始まる単語について、その単語とその行の残りの文字を
                      対話的シェルに無視させることができます (前述の コメント セクションを参照)。
                      このオプションはデフォルトで有効になっています。
              lastpipe
                      設定されており、かつジョブ制御が有効でなければ、 シェルはバックグラウンドで
                      の実行ではないパイプラインの最後のコマンドを 現在のシェル環境で実行します。
              lithist 設定されており、かつ cmdhist オプションが有効ならば、  複数行に分かれている
                      コマンドは  (セミコロンで区切られるのではなく) できる限り途中に改行を埋め込
                      むことで履歴に保存されます。
              login_shell
                      シェルがログインシェルとして起動されると (前述の INVOCATION を参照)、このオ
                      プションが設定されます。 この値を変更することはできません。
              mailwarn
                      設定されており、かつ bash がメールのチェックに使うファイルが 前回のチェック
                      以降にアクセスされている場合、 メッセージ “The mail in  mailfile  has  been
                      read” が表示されます。
              no_empty_cmd_completion
                      設定されており、かつ readline が使われている場合、 空行に対してコマンド補完
                      をさせようとしたときに、 bash は補完候補を PATH から検索しません。
              nocaseglob
                      設定されている場合、 bash はパス名展開 (前述の パス名展開 を参照)  を行うと
                      きに、 ファイル名の大文字と小文字を区別せずにマッチングを行います。
              nocasematch
                      設定されている場合、  bash は条件コマンド case[[ 実行時のパターンマッチ
                      で 大文字小文字を区別せずにパターンマッチを行います。
              nullglob
                      設定されている場合、 bash はどのファイルにもマッチしないパターン (前述の 
                      ス名展開 を参照) を、その文字列自身ではなく、空文字列に展開します。
              progcomp
                      設定されている場合、プログラム補完機能  (前述のプログラム補完を参照) が有効
                      になります。 このオプションはデフォルトで有効になっています。
              promptvars
                      設定されている場合、  プロンプト文字列に対して   パラメータ展開、コマンド置
                      換、算術式展開、クォート削除  が行われます。 この展開は前述の プロンプト セ
                      クションで説明した展開が行われた後に行われます。 このオプションはデフォルト
                      で有効になっています。
              restricted_shell
                      シェルが制限モードで起動された場合、  このオプションが設定されます  (後述の
                      制限付きのシェル セクションを参照)。 この値を変更することはできません。  こ
                      れは起動ファイルが実行されるときにもリセットされないので、 シェルが制限付き
                      かどうかを起動ファイル内部で知ることができます。
              shift_verbose
                      設定されている場合、組み込みコマンド  shift  においてシフトの回数が位置パラ
                      メータの数を超えると、 エラーメッセージが出力されます。
              sourcepath
                      設定されている場合、組み込みコマンド  source (.) は PATH の値を使って、引き
                      数として与えられたファイルを含むディレクトリを探します。 このオプションはデ
                      フォルトで有効です。
              xpg_echo
                      設定されている場合、  組み込みコマンド echo は デフォルトでバックスラッシュ
                      によるエスケープシーケンスを展開します。

       suspend [-f]
              SIGCONT シグナルを受け取るまで、シェルの実行をサスペンドします。 ログインシェルはサ
              スペンドできません。  -f オプションを与えると、この動作が上書きされ、ログインシェル
              がサスペンド できるようになります。 シェルがログインシェルかつ -f  が与えられていな
              い場合と、ジョブ制御が有効でない場合とを除いて、 返却ステータスは 0 です。

       test expr
       [ expr ]
              条件式 expr を評価した結果に基づいて、ステータス 0 または 1 を返します。 演算子とオ
              ペランドそれぞれは別々の引き数でなければなりません。 式は前述の 条件式 セクションで
              説明したプライマリで構成されます。 test はオプションを受け取らず、 引き数 -- をオプ
              ションの終わりを示すものとして受け取りも無視もしません。

              式は次に示す演算子を使って結合できます。 優先度の高い順に示します。  式の評価は後で
              述べるように引き数の数に依存します。  引き数が 5 つ以上のときは演算子の優先度に従い
              ます。
              ! expr expr が偽ならば真になります。
              ( expr )
                     expr の値を返します。 これを使うと、通常の演算子の優先度を変更できます。
              expr1 -a expr2
                     expr1expr2 が両方とも真ならば真になります。
              expr1 -o expr2
                     expr1expr2 のいずれかが真ならば真になります。

              test および [ は、 引き数の数に基づいた規則の集合を用いて条件式を評価します。

              引き数が 0 個
                     この式は偽です。
              引き数が 1 個
                     引き数が空でない場合に限り真になります。
              引き数が 2 個
                     最初の引き数が ! ならば、 2 番目の引き数が空の場合に限り真になります。  最初
                     の引き数が、既に  条件式  セクションで説明した単項条件演算子のいずれかであれ
                     ば、 単項の評価が真の場合に式は真となります。 最初の引き数が正しい単項条件演
                     算子でなければ、式は偽となります。
              引き数が 3 個
                     以下の順に条件が適用されます。  2 番目の引き数が、既に 条件式 セクションで説
                     明した二値条件演算子のいずれかであれば、 最初の引き数と 3 番目の引き数をオペ
                     ランドとして使った  二値評価の結果が式の結果となります。  引き数が  3 個の場
                     合、 -a-o は二値演算子として扱われます。 最初の引き数が ! であれば、2 番
                     目と  3 番目の引き数を使った、 引き数 2 つの評価の結果を否定したものが値とな
                     ります。 最初の引き数が ( であり、3 番目の引き数が ) ならば、 2 番目の引き数
                     を使って引き数   1  つの評価を行った値が結果となります。  これら以外の場合に
                     は、式は偽となります。
              引き数が 4 個
                     最初の引き数が ! ならば、 残りの引き数で作った引き数 3  つの式の値を否定した
                     ものが結果となります。    それ以外の場合には、先に挙げた規則を使った優先度に
                     従って 式が展開・評価されます。
              引き数が 5 個以上
                     先に挙げた規則を使った優先度に従って式が展開・評価されます。

              test[ では、演算子 <> は ASCII コードに基づき辞書順にソートします

       times  シェルとシェルから実行したプロセスのそれぞれについて、 累積のユーザ時間とシステム時
              間を加えたものを出力します。 返却ステータスは 0 です。

       trap [-lp] [[arg] sigspec ...]
              シェルがシグナル  sigspec を受け取ると、コマンド arg が読み込まれて、実行されます。
              arg が存在しない (かつ sigspec が一つ指定された) 場合か、 arg- の場合、  指定さ
              れたシグナルは全てオリジナルの動作  (シェルの起動時に設定されていた値) にリセットさ
              れます。 arg が空文字列である場合、それぞれの sigspec で指定されたシグナルは、 シェ
              ルとシェルが起動したコマンドから無視されます。 arg なしで -p オプションが与えられた
              場合、 各 sigspec に関連付けられた trap  コマンドが表示されます。  引き数が全くない
              か、  -p だけが与えられた場合、 trap は各シグナルに関連付けられたコマンドのリストを
              出力します。 -l オプションを与えると、 シェルはシグナル名と対応する番号のリストを出
              力します。 それぞれの sigspec は、<signal.h> で定義されているシグナル名、またはシグ
              ナル番号です。 シグナル名は大文字小文字は区別されず、先頭の SIG は省略可能です。

              sigspecEXIT (0) であれば、シェルの終了時にコマンド arg が実行されます。 sigspecDEBUG であれば、各々の 単純なコマンドfor コマンド、case コマンド、select コマ
              ンド、各々の算術 for コマンドの前、およびシェル関数の最初のコマンドの実行前 (前述の
              シェルの文法セクションを参照)  に、コマンド arg が実行されます。 DEBUG のトラップの
              影響についての詳細は組み込みコマンド shoptextdebug オプションの説明を参照してく
              ださい。  sigspecRETURN であれば、シェル関数の実行、または組み込みコマンドの .source で実行されたスクリプトの実行が終わるたびにコマンド arg が実行されます。

              sigspecERR であれば、 単純なコマンドが  0  以外の終了ステータスのときにコマンド
              arg が実行されます。 ただし、失敗したコマンドが、 while または until キーワード直後
              のコマンドリストに含まれる場合、 if 文の条件に含まれる場合、 &&||  のリスト中で
              実行するコマンドに含まれる場合、 および、コマンドの戻り値が !  で反転されている場合
              には、 ERR のトラップは実行されません。 これらは errexit オプションが従う条件と同じ
              です。

              シェルに入る際に無視されるシグナルは、  トラップもリセットもできません。 無視されな
              かったシグナルのトラップは、 サブシェルやサブシェル環境では作られたときに  元の値に
              リセットされます。 sigspec のいずれかが不正であれば、返却ステータスは偽になります。
              それ以外の場合には、 trap は真を返します。

       type [-aftpP] name [name ...]
              オプションなしの場合には、各 name  をコマンド名として使ったときに、それがどのように
              解釈されるかを示します。  -t  オプションを使うと、  name がエイリアス、シェルの予約
              語、関数、 組み込みコマンド、ディスク上のファイルのいずれかの場合、 type はそれぞれ
              alias,  keyword, function, builtin, file という文字列を出力します。 name が見つから
              ない場合は何も出力されず、偽の終了ステータスが返されます。 -p  オプションを使うと、
              typename をコマンド名として指定した場合に実行されるディスクファイルの名前を返し
              ます。 ただし、 ``type -t name'' が file を返さない場合は、何も返しません。 -P オプ
              ションを使うと、  ``type -t name'' が file を返さない場合でも namePATH から探し
              ます。 コマンドがハッシュされている場合、 -p-P はハッシュされている値を表示しま
              す。 この場合、表示されるのは、必ずしも PATH 中で最初に現われるファイルとは限りませ
              ん。 -a オプションを使うと、 typename  という名前の実行ファイルがある場所を全て
              出力します。 -p オプションが同時に使われていない場合に限り、 エイリアスや関数も出力
              されます。 -a  を使うときには、ハッシュされているコマンドの表は参照されません。  -f
              オプションを使うと、  組み込みコマンド  command  と同じように、シェル関数を探しませ
              ん。 type は、すべての引き数が見つかれば真を返し、 いずれかが見つからなければ偽を返
              します。

       ulimit [-HSTabcdefilmnpqrstuvx [limit]]
              これを使うと、シェルおよびシェルが起動するプロセスが 利用できるリソースを制御できま
              す。 ただし、このような制御ができるシステムの場合に限ります。 -H オプションと -S オ
              プションは、  それぞれ指定されたリソースに対する  強い制限  (hard limit) と弱い制限
              (soft limit) を設定します。 強い制限は一度設定すると、root 以外のユーザが増やすこと
              はできません。 弱い制限は強い制限の値までは増やせます。 -H-S がどちらも指定され
              ていない場合、 強い制限と弱い制限が両方とも設定されます。 limit の値には、数字  (単
              位はリソースに応じて規定)、または  hard,  soft,  unlimited  が指定できます。  hard,
              soft,  unlimited   は、それぞれ現在の強い制限、現在の弱い制限、制限なしを表します。
              limit  を省略すると、リソースの弱い制限の現在値が表示されます。 ただし、-H が与えら
              れている場合は除きます。 複数のリソースが指定されているときは、制限名と単位が値の前
              に出力されます。 他のオプションは以下のように解釈されます:
              -a     現在の制限を全て表示する
              -b     ソケットバッファの最大サイズ
              -c     生成されるコア (core) ファイルの最大サイズ
              -d     プロセスのデータセグメントの最大サイズ
              -e     スケジュール優先度 ("nice") の最大値
              -f     シェルとその子プロセスが生成できるファイルの最大サイズ
              -i     保留中シグナルの最大数
              -l     メモリにロックできる最大サイズ
              -m     常駐セットサイズ  (resident set size) の最大値 (多くのシステムはこの制限を守
                     りません)
              -n     オープンできるファイル・ディスクリプターの最大数 (ほとんどのシステムでは、こ
                     の値を設定することはできません)
              -p     512 バイトブロック単位でのパイプのサイズ (これは設定できないかもしれません)
              -q     POSIX メッセージキューの最大バイト数
              -r     リアルタイム・スケジューリングの優先度の最大値
              -s     最大スタックサイズ
              -t     CPU 時間の最大量 (秒単位)
              -u     1 人のユーザが使用できる最大のプロセス数
              -v     そのシェルが使用できる最大の仮想メモリ量 (システムによっては、子プロセスも含
                     まれる)
              -x     ファイルロックの最大数
              -T     スレッドの最大数

              limit が指定された場合、その値が指定されたリソースの新しい値となります (-a は表示専
              用です)。  オプションが全く指定されなかった場合は、 -f が指定されたものとみなされま
              す。 値は 1024 バイト単位で増えますが、例外として -t は秒単位、 -p 512 バイトブロッ
              ク単位、  -T,  -b,  -n, -n, -u は単位なしの値です。 返却ステータスは基本的に 0 です
              が、 不正なオプションや引き数が渡された場合、  新しい制限を設定する際にエラーが起き
              た場合は除きます。

       umask [-p] [-S] [mode]
              ユーザのファイル生成マスクに  mode を設定します。 mode が数字で始まる場合には、これ
              は 8 進数と解釈されます。 それ以外の場合には、 chmod(1)  に指定するのと同様のシンボ
              リックなモードマスクと解釈されます。  mode が省略されると、現在のマスクの値が出力さ
              れます。 -S  オプションを指定すると、マスクはシンボリックな形式で表示されます。  デ
              フォルトの出力は 8 進の数値です。 -p オプションが指定され、かつ mode が省略された場
              合、入力として再利用できる形式で出力が行われます。 モードが正常に変更できた場合や、
              mode  引き数が全く与えられなかった場合には、 返却ステータスは 0 となります。 それ以
              外の場合には偽となります。

       unalias [-a] [name ...]
              定義されているエイリアスのリストから name を削除します。 -a  が与えられている場合に
              は、エイリアス定義は全て削除されます。 与えられた name が定義されているエイリアスで
              ない場合以外は、返却ステータスは真になります。

       unset [-fv] [name ...]
              name それぞれについて、対応する変数や関数を削除します。  オプションが全く指定されて
              いない場合や、  -v オプションが指定された場合は、各 name はシェル変数を参照します。
              読み込み専用の変数の設定を消すことはできません。 -f  が指定されている場合、各  name
              はシェル関数を参照し、その関数の定義が削除されます。   設定が消された変数や関数は全
              て、   それ以降のコマンドに渡される環境変数からも削除されます。    COMP_WORDBREAKS,
              RANDOM, SECONDS, LINENO, HISTCMD, FUNCNAME, GROUPS, DIRSTACK のいずれかの設定を消し
              た場合、これらが持つ特別な特性もなくなります。 これは後で再設定しても元に戻ることは
              ありません。 name が読み込み専用の場合以外は、 終了ステータスは真となります。

       wait [n ...]
              指定された各プロセスを  wait  し、その終了ステータスを返します。 各 n はプロセス ID
              またはジョブ指定です。   ジョブ指定を与えた場合、そのジョブのパイプラインに含まれる
              全てのプロセスを wait します。 n が与えられていない場合には、現在アクティブな全ての
              子プロセスを wait し、 返却ステータスは 0 となります。 n が存在しないプロセスやジョ
              ブを指定している場合、 返却ステータスは 127 になります。 それ以外の場合、返却ステー
              タスは wait していた最後のプロセスまたはジョブの終了ステータスとなります。

制限付きのシェル (RESTRICTED SHELL)

       bashrbash という名前で起動した場合や、起動時に -r オプションを指定した場合には、シェル
       は制限された状態になります。 制限付きのシェルは、 標準のシェルよりも細かく制御された環境を
       用意したいときに使われます。 制限付きのシェルは bash と全く同じように動作しますが、 以下の
       ようなことが許可されなかったり実行されなかったりします。

       ·      cd を使ってディレクトリを変更すること

       ·      SHELL, PATH, ENV, BASH_ENV の値の設定や設定取り消しを行うこと

       ·      / を含むコマンド名を指定すること

       ·      組み込みコマンド . の引き数として / を含むファイル名を指定すること

       ·      組み込みコマンド hash のオプション -p の引き数として / を含むファイル名を指定するこ
              と

       ·      起動時にシェル環境から関数定義をインポートすること

       ·      起動時にシェル環境から SHELLOPTS の値を解釈すること

       ·      リダイレクション演算子 >, >|, <>, >&, &>, >> を使ってリダイレクトを行 なうこと

       ·      組み込みコマンド exec を用いて、シェルを別のコマンドに置き換えること

       ·      組み込みコマンド enable-f オプションと -d  オプションを使って、組み込みコマンド
              を追加・削除すること

       ·      組み込みコマンド enable を使って、無効になっている組み込みコマンドを有効にすること

       ·      組み込みコマンド command-p オプションを指定すること

       ·      set +rset +o restricted を用いて制限モードを解除すること

       これらの制限は、何らかの起動ファイルを読み込んだ後に適用されます。

       シェルスクリプトであると判明したファイルが実行されるとき  (前述の コマンドの実行 を参照)、
       rbash はスクリプト実行用に立ち上げたシェルでは制限を全て無効にします。

関連項目

       Bash Reference Manual, Brian Fox and Chet Ramey
       The Gnu Readline Library, Brian Fox and Chet Ramey
       The Gnu History Library, Brian Fox and Chet Ramey
       Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE
       sh(1), ksh(1), csh(1)
       emacs(1), vi(1)
       readline(3)

ファイル

       /bin/bash
              bash の実行ファイル。
       /etc/profile
              システム全体用の初期化ファイル。ログインシェルが実行します。
       ~/.bash_profile
              個人用の初期化ファイル。ログインシェルが実行します。
       ~/.bashrc
              対話シェルごとに実行される、個人用の起動ファイル。
       ~/.bash_logout
              個人用のログインシェル後処理ファイル。 ログインシェルの終了時に実行されます。
       ~/.inputrc
              個人用の readline 初期化ファイル。

作者

       Brian Fox, Free Software Foundation
       bfox@gnu.org

       Chet Ramey, Case Western Reserve University
       chet.ramey@case.edu

バグ報告

       bash のバグを見つけたら必ず報告してください。 ただし報告の前には、それが本当にバグであるこ
       とと、       バグが最新版の       bash      で起こることを確かめてください。      最新版は
       ftp://ftp.gnu.org/pub/gnu/bash/ から入手できます。

       本当にバグがあると判断した場合には、 bashbug コマンドを使ってバグ報告を行います。 バグを修
       正してくださった場合には、  ぜひその内容も一緒にメールしてください! 提案や「哲学上の」バグ
       報告は、bug-bash@gnu.org にメールしたり、 ニュースグループの gnu.bash.bug に投稿したりして
       くださってもかまいません。

       バグ報告には必ず以下のことを書いてください:

       bash のバージョン
       ハードウェアとオペレーティングシステム
       コンパイルに使ったコンパイラ
       バグ動作の説明
       バグを再現できる「レシピ」 (簡単なシェルスクリプト)

       bashbug コマンドは、バグ報告を送るために用意されているテンプレートに、 最初の 3 項目を自動
       的に書き込みます。

       このオンラインマニュアルに関するコメントやバグ報告は  chet.ramey@case.edu   宛にお願いしま
       す。

バグ

       bash は大きすぎるし、遅すぎます。

       bash   と昔ながらのバージョンの   sh  にはちょっとした違いがいくつかあります。この大部分は
       POSIX の仕様のせいで生じたものです。

       使い方によっては、エイリアスは混乱の元になります。

       シェル組み込みコマンドとシェル関数は、停止したり、実行を再開したりできません。

       複合コマンドや `a ; b ; c' の形式のコマンド列は、 プロセスのサスペンドを行う際に綺麗に扱う
       ことができません。 あるプロセスを停止すると、 シェルはコマンド列の次のコマンドを即座に実行
       するからです。 この問題はコマンド列を括弧の中に置いて サブシェルに実行させることで解決でき
       ます。 こうすれば、ひとまとまりのものとして停止できます。

       配列変数は (まだ) エクスポートできません。

       一度に 1 つのコプロセスしかアクティブにできません。