FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 書式 | 解説 | 環境変数 | 関連ファイル | 終了ステータス | 関連項目 | 歴史 | 作者 | バグ
SH(1)                   FreeBSD 一般コマンドマニュアル                   SH(1)

名称
     sh -- コマンドインタプリタ (シェル)

書式
     sh [-/+abCEefhIimnPpTuVvx] [-/+o longname] [script [arg ...]]
     sh [-/+abCEefhIimnPpTuVvx] [-/+o longname] -c string [name [arg ...]]
     sh [-/+abCEefhIimnPpTuVvx] [-/+o longname] -s [arg ...]

解説
     sh ユーティリティは、システムのための標準のコマンドインタプリタです。sh
     の現在のバージョンは、シェルのための IEEE Std 1003.1 (``POSIX.1'') 仕様に
     近くなっています。それは、POSIX によって指定された機能といくつかの Berke
     ley 版の拡張のみをサポートしています。このマニュアルページは、シェルの指
     導書でも完全な仕様書でもありません。

   概要
     シェルは、ファイルまたは端末からの行を読み込み、それらを解釈し、通常、他
     のコマンドを実行するコマンドです。それは、ユーザがシステムにログインする
     とき、開始されるプログラムですが、ユーザは、chsh(1) コマンドで異なるシェ
     ルを選択することもできます。シェルは、組み込みのヒストリと行編集機能とと
     もに、フロー制御構成、データ記憶に加えて様々な機能を提供するマクロ機能が
     ある言語を実装しています。それは、対話型の使用を支援し、インタプリタ型の
     言語が対話型と非対話型の使用 (シェルスクリプト) の両方に共通の利点があ
     る、多くの機能を組み込んでいます。すなわち、実行しているシェルに直接コマ
     ンドをタイプすることができるか、またはシェルによって直接実行することがで
     きる、ファイルに入れることができます。

   起動
     引数が存在しないなら、またシェルの標準入力が端末に接続されるなら (または
     -i オプションが設定されるなら)、シェルは、対話型のシェルと見なされます。
     対話型のシェルは、一般的に、各コマンドの前にプロンプトを出し、プログラミ
     ングとコマンドのエラーを (下記に記述されるように) 異なって扱います。最初
     に開始するとき、シェルは、引数 0 を検査し、それがダッシュ (`-') で始まる
     なら、シェルは、また、ログインシェルと見なされます。これは、ユーザが最初
     にログインするとき、通常システムによって自動的に行われます。ログインシェ
     ルは、存在するなら、最初にファイル /etc/profile からコマンドを読み込み、
     次にユーザのホームディレクトリの .profile を読み込みます。環境変数 ENV が
     シェルの入口で設定されるか、またはログインシェルの .profile で設定される
     なら、シェルは、次にパラメータの拡張と算数演算の拡張のために、その値を対
     象とし、指定されたファイルからコマンドを読み込みます。したがって、ユーザ
     は、.profile ファイルのログイン時のみ実行されるコマンドと、ENV ファイル内
     部のシェルごとに実行されるコマンドを置くべきです。ユーザは、ホームディレ
     クトリのファイル .profile に次の行を置くことによって望ましいファイル名を
     .shrc の代わりとして ENV 変数をあるファイルに設定することができます:

           ENV=$HOME/.shrc; export ENV

     コマンド行で指定された最初のオプションでない引数は、コマンド (シェルスク
     リプト) を読み込む、ファイルの名前として扱われ、残りの引数は、シェルの位
     置パラメータ ($1, $2, その他) として設定されます。そうでなければ、シェル
     は、標準入力からコマンドを読み込みます。

     sh の古いバージョンと異なり、ENV スクリプトは、対話型のシェルの呼び出しで
     のみ source (コマンドとして読み込む) されます。これは、下手に考え抜いた
     ENV スクリプトと関連した良く知られた時々簡単に利用できるセキュリティホー
     ルを塞ぎます。

   引数リスト処理
     sh の単一の文字オプションのすべてには、-c-/+o を除いて、対応する長い
     名前があります。これらの長い名前は、下記の説明の単一の文字オプションの隣
     に提供されています。オプションのための長い名前は、引数として sh-/+o
     オプションへの引数として指定されます。いったんシェルが実行されると、オプ
     ションのための長い名前は、set 組み込みコマンド (「組み込みコマンド」と呼
     ばれるセクションで後で説明されます) の -/+o オプションへの引数として指定
     されます。ダッシュ (`-') でオプションを導入することは、オプションを有効に
     しますが、プラス (`+') を使用することは、オプションを無効にします。``--''
     または通常の `-' は、処理しているオプションを停止して、コマンド行の残りの
     単語を、引数として扱うように強制します。-/+o-c オプションには、長い名
     前がありません。それらは、引数を取り、単一文字オプションの後に記述されま
     す。

     -a allexport
             割り当てがそれらに行われるとき、エクスポートのための変数にフラグ
             を付けます。

     -b notify
             バックグラウンドのジョブの完了の非同期の通知を有効にします。(未実
             装)

     -C noclobber
             `>' で既存のファイルを上書きしません。

     -E emacs
             組み込みの emacs(1) コマンド行編集を有効にします (それが設定され
             ているなら、(-V を無効にします。端末で対話型であるとき、自動的に
             設定します)。

     -e errexit
             いずれかのテストされていないコマンドが非対話モードで失敗するな
             ら、直ちに終了します。コマンドの終了ステータスは、コマンドが if,
             elif, while または until を制御するために使用されるリストの一部で
             あるなら、明示的にテストされると見なされます。また、コマンドが
             ``&&'' または ``||'' 演算子の左辺のオペランドであるなら、テストさ
             れているとみなされます。また、コマンドが ! キーワードによって先導
             されたパイプラインであるなら、テストされているとみなされます。
             シェル関数が実行されて、終了ステータスが明らかにテストされている
             なら、関数のすべてのコマンドは、同様にテストされているとみなされ
             ます。

             特により大きなスクリプトで予期しない方法で振る舞う傾向があるの
             で、-e に依存する代わりに、失敗を明示的にチェックすることが推奨さ
             れます。

     -f noglob
             パス名の展開を無効にします。

     -h trackall
             POSIX 準拠のための何もしないオプション。

     -I ignoreeof
             対話型モードであるとき、入力から EOF を無視します。

     -i interactive
             シェルを対話型に振る舞うように強制します。

     -m monitor
             (対話型のとき、自動的に設定される) ジョブ制御をオンにします。新し
             いプロセスグループは、(ジョブと呼ばれる) 各パイプラインのために作
             成されます。ジョブをサスペンドするか、またはフォアグラウンド、ま
             たはバックグラウンドでそれらを実行することは可能です。非対話型の
             シェルで、端末が利用可能でなく、たとえ、個別のプロセスグループに
             プロセスを置くために有用でなくても、このオプションを設定すること
             ができます。

     -n noexec
             対話型ではないなら、コマンドを読み込みますが、それらを実行しませ
             ん。これは、シェルスクリプトの構文をチェックするために役に立ちま
             す。

     -P physical
             -L (論理的なディレクトリのレイアウト) から -P (物理的なディレクト
             リのレイアウト) に cdpwd コマンドのためのデフォルトを変更しま
             す。

     -p privileged
             特権モードをオンに切り替えます。このモードは、実効ユーザ ID また
             は実効グループ ID が、実ユーザ ID または実グループ ID と等しくな
             いなら、起動時に有効にされます。このモードをオフに切り替えること
             は、実効ユーザ ID と実効グループ ID を実ユーザ ID と実グループ ID
             に設定します。このモードが対話型のシェルのために有効にされると
             き、ファイル /etc/suid_profile は、/etc/profile がソースさ (読み
             込ま) れた後に、~/.profile の代わりにソースさ (読み込ま) れ、ENV
             変数の内容は、無視されます。

     -s stdin
             (ファイル引数が存在しないなら、自動的に設定される) コマンドを標準
             入力から読み込みます。このオプションは、シェルが既に実行を開始さ
             れた後に、設定するとき、(すなわち、set コマンドで設定されるとき)
             効果がありません。

     -T trapsasync
             子プロセスを待つとき、直ちにトラップを実行します。このオプション
             が設定されないなら、トラップは、IEEE Std 1003.2 (``POSIX.2'') で
             明記されるように子プロセスが終了した後に実行されます。この非標準
             のオプションは、シグナルをブロックする子プロセスのまわりの保護
             シェルを置くために役に立ちます。周囲のシェルは、子プロセスを kill
             するか、または、tty への制御を単に返し、次のように、子プロセスを
             1 つのままとします:

                   sh -T -c "trap 'exit 1' 2 ; some-blocking-program"

     -u nounset
             設定されていない変数、位置パラメータまたは特殊パラメータ ! を拡張
             することを試みるとき、標準エラーにメッセージを書き込み、シェルが
             対話的でないなら、直ちに終了します。

     -V vi   組み込みの vi(1) コマンド行編集を有効にします (それが設定されてい
             るなら、-E を無効にします)。

     -v verbose
             シェルは、その入力が読み込まれる通りに、標準エラーにそれを書き込
             みます。デバッグの役に立ちます。

     -x xtrace
             コマンドが実行される前に、(パラメータの拡張と算数展開のために対象
             とされた PS4 変数の値を前に付けて) 各コマンドを標準エラーに書き込
             みます。デバッグのために役に立ちます。

     nolog   POSIX 準拠のために別の何も行わないオプション。それは、長い名前が
             あるだけです。

     -c オプションによって、標準入力の代わりに string オペランドからコマンドを
     読み込みます。このオプションは、その引数として単一の文字列だけを受け付け
     ることを覚えておいてください、したがって、複数の単語の文字列は、引用され
     なければまりません。

     -/+o オプションは、有効にされるか、または無効にされる、オプションの長い名
     前のみの引数として受け取ります。例えば、sh の次の 2 つの呼び出しは、両方
     とも組み込みの emacs(1) コマンド行編集を有効にします:

           set -E
           set -o emacs

     引数なしで使用されるなら、-o オプションは、人間に読み込み可能な形式で現在
     のオプションの設定を表示します。+o が引数なしで使用されるなら、現在のオプ
     ション設定は、シェルへの再入力に適している形式で出力されます。

   レキシカル (字句解析) 構造
     シェルは、ファイルから行の単位で入力を読み込み、空白類 (ブランクとタブ)
     で、そしてシェルに特有の ``演算子'' と呼ばれる特定の文字のシーケンスで、
     単語に分割します。次の 2 つのタイプの演算子があります: 制御演算子とリダイ
     レクト演算子 (それらの意味は、後で議論されます)。次は、有効な演算子のリス
     トです:

     制御演算子:
                   &     &&    (     )     \n
                   ;;    ;&    ;     |     ||

     リダイレクト演算子:
                   <     >     <<    >>    <>
                   <&    >&    <<-   >|

     文字 `#' が、単語の始まりで使用されるなら、コメントになります。`#' で始ま
     る単語と行の残りは、無視されます。

     ASCII NUL (ヌル) 文字 (文字コード 0) は、シェル入力で許可されていません。

   引用 (クォート)
     引用は、シェルにとって特殊な意味を持つ文字や単語 (演算子、空白類、キー
     ワード、エイリアス名など) の意味を打ち消すために使用されます。

     引用には、次の 4 つのタイプがあります: 一致するシングルクォート、ドル記号
     シングルクォート、一致するダブルクォート、とバックスラッシュ。

     シングルクォート
             シングルクォートのペアで囲まれた文字は、すべてその文字そのまま
             (リテラル) として扱われます (ただしシングルクォートは、別です。シ
             ングルクォートで囲った文字列の中にシングルクォートを含めることは
             できません)。

     ドル記号シングルクォート
             $' と ' の間の文字で囲まれた文字は、バックスラッシュとシングル
             クォートを除いて、すべての文字のリテラルの意味を維持します。バッ
             クスラッシュは、C スタイルのエスケープシーケンスを取り入れます:

             \a          アラート (端末のベルを鳴らします)

             \b          バックスペース

             \cc         stty(1) の ^c によって示される制御文字。c がバックス
                         ラッシュであるなら、2 つ指定しなければなりません。

             \e          ESC 文字 (ASCII 0x1b)

             \f          フォームフィード

             \n          改行

             \r          キャリッジリターン

             \t          水平タブ

             \v          垂直タブ

             \\          リテラルのバックスラッシュ

             \'          リテラルのシングルクォート

             \"          リテラルのダブルクォート

             \nnn        8 進数値が nnn (1 から 3 桁) であるバイト

             \xnn        16 進数値が nn (最後の 2 つのみが使用される 1 つ以上
                         の桁) であるバイト

             \unnnn      ユニコードのコードポイント nnnn (4 つの 16 進数)

             \Unnnnnnnn  ユニコードのコードポイント nnnnnnnn (8 つの 16 進数)

             ユニコードのコードポイントのためのシーケンスは、現在、UTF-8 ロ
             ケールでのみ役に立ちます。それらは、コードポイント 0 と UTF-16 の
             サロゲート (surrogate) を受け付けません。

             エスケープシーケンスが値 0 のバイトを生成するなら、そのバイトと
             マッチするシングルクォートまでの文字列の残りは、無視されます。

             バックスラッシュから始まる他の文字列は、エラーです。

     ダブルクォート
             ダブルクォート内に囲まれた文字は、ドル記号 (`$')、バッククォート
             (``') とバックスラッシュ (`\') を除いて、すべての文字のリテラルの
             意味を保ちます。ダブルクォートの内部のバックスラッシュは、歴史的
             に風変わりです。次の文字に先行するなら、引用 (クォート) の役目を
             行い、そうでなければ、リテラルのままとなります:

                   $     `     "     \     \n

     バックスラッシュ
             バックスラッシュは、改行文字 (`\n') を例外として、次の文字のリテ
             ラルの意味を保ちます。改行に先行するバックスラッシュは、行の継続
             として扱われます。

   キーワード
     キーワードまたは予約語は、シェルとして特別の意味があり、行の初めと制御演
     算子の後に認識される単語です。次は、キーワードです:

           !        {        }        case      do
           done     elif     else     esac      fi
           for      if       then     until     while

   エイリアス
     エイリアスは、alias 組み込みコマンドを使用して設定される名前と対応する値
     です。単純なコマンドのコマンドの単語が現れるかどうか、そして、キーワード
     が現れるなら、キーワードをチェックした後に、シェルは、それがエイリアスに
     一致しているかどうか確かめるためにその単語をチェックします。一致したなら
     ば、入力ストリーム中の単語をその値に置き換えます。例えば、値 ``ls -F'' が
     ある ``lf'' と呼ばれるエイリアスがあるなら、入力

           lf foobar

     は、

           ls -F foobar

     となります。また、エイリアスは、値が空白またはタブで終わるエイリアスの後
     に認識されます。例えば、値 ``nohup '' がある ``nohup'' と呼ばれるエイリア
     スもあるなら、入力

           nohup lf foobar

     は、

           nohup ls -F foobar
     となります。

     エイリアスは、引数をつけて関数を作成する方法を学習する必要なしに、コマン
     ドのための省略表現を作成する経験の少ないユーザのために便利な方法を提供し
     ています。スクリプトのエイリアスを使用することは、それらを使用するコード
     を解析する前に、それらを定義するコマンドを実行しなければならないので、お
     勧めできません。これは、不安定であり、移植性がありません。

     エイリアス名は、コマンド行でエイリアス名の内か隣接する文字に引用を使用し
     て、そのエイリアス値を置き換えないように、回避することができます。これ
     は、ほとんどの場合、同じ名前の関数、組み込み、または、通常のプログラムを
     実行するために、バックスラッシュをエイリアス名の前に置くことによって、行
     われます。「引用 (クォート)」セクションを参照してください。

   コマンド
     シェルは、このマニュアルページの範囲外の仕様 (IEEE Std 1003.2
     (``POSIX.2'') 文書の BNF を参照) である、言語に従って読み込まれた単語を解
     釈します。しかしながら、基本的に、行が読み込まれ、行 (または制御演算子の
     後の) の最初の単語が、キーワードでないなら、シェルは、単純なコマンドを認
     識します。そうでなければ、複雑なコマンドまたは他の何らかの特別な構成が認
     識されます。

   単純なコマンド
     単純なコマンドが解釈されるなら、シェルは、次の動作を実行します:

     1.   形式 ``name=value'' の先導する単語は、取り除かれ、単純なコマンドの環
          境に割り当てられます (それらは、拡張に影響しません)。リダイレクト演
          算子と (下記に記述されるような) それらの引数は、取り除かれ、処理のた
          めに保存されます。

     2.   残りの単語は、「単語展開」と呼ばれるセクションで説明されるように展開
          され、最初の残りの単語は、コマンド名と見なされ、コマンドは、検索され
          ます。残りの単語は、コマンドの引数と見なされます。結果のコマンド名が
          ないなら、1) で認識される ``name=value'' 変数の割り当ては、現在の
          シェルに影響します。

     3.   リダイレクトは、次のセクションで説明されるように実行されます。

   リダイレクト
     リダイレクトは、コマンドが、その入力を読み込むか、またはその出力に送ると
     ころを変更するために使用されます。一般的に、リダイレクトは、ファイルへの
     既存の参照をオープンするか、クローズするか、または複写します。リダイレク
     トのために使用される全般的な形式は、次の通りです:

           [n] redir-op file

     redir-op は、前述のダイレクト演算子の 1 つです。次は、これらの演算子がど
     のように使用されるかのいくつかの例を挙げています。stdin と stdout は、そ
     れぞれ標準入力と標準出力のために共通に使用されている略語であることに注意
     してください。

           [n]> file     stdout (またはファイル記述子 n) を file にリダイレク
                         トします

           [n]>| file    上記と同じですが、-C オプションを上書き (無効に) しま
                         す

           [n]>> file    stdout (またはファイル記述子 n) を file に追加しま
                         す。

           [n]< file     stdin (またはファイル記述子 n) に file からリダイレク
                         トします。

           [n]<> file    stdin (またはファイル記述子 n) を file から/へ、リダ
                         イレクトします。

           [n1]<&n2      ファイル記述子 n2 を stdin (またはファイル記述子 n1)
                         に複製します。

           [n]<&-        stdin (またはファイル記述子 n) をクローズします。

           [n1]>&n2      stdout (またはファイル記述子 n1) をファイル記述子 n2
                         に複製します。

           [n]>&-        stdout (またはファイル記述子 n) をクローズします。

     次のリダイレクトは、しばしば ``ヒアドキュメント (here-document)'' と呼ば
     れます。

           [n]<< delimiter
           here-doc-text
           ...
           delimiter

     デリミタまでの連続する行のすべてのテキストは、離れた所に保存され、標準入
     力、またはファイル記述子が指定されるなら、ファイル記述子 n でコマンドを利
     用可能にします。最初の行で指定されるような delimiter (デリミタ) が引用さ
     れるなら、here-doc-text は、リテラルとして扱われ、そうでなければ、テキス
     トは、(単語展開のセクションに記述されているように) パラメータの拡張、コマ
     ンドの置換と算術展開に従います。演算子が ``<<'' の代わりに ``<<-'' である
     なら、here-doc-text の先導するタブは、取り除かれます。

   検索と実行
     次の 3 つのタイプのコマンドがあります: シェル関数、組み込みコマンドと通常
     のプログラム。コマンドは、その順序で (名前によって) 検索されます。3 つの
     タイプのコマンドは、すべて異なる方法で実行されます。

     シェル関数を実行するとき、$0 を除くすべての位置パラメータ ($1, $2,..) を
     シェル関数への引数として設定します。$0 は、変更されません。シェル関数の環
     境として指定された変数 (関数名の直前に代入されたもの) は、その関数に局所
     的な変数となり、指定された初期値が設定されます。そして、シェルは、関数定
     義で与えられたコマンドを実行します。コマンドの実行が完了すると、位置パラ
     メータを元の値に戻します。これは、全て現在のシェルの中で処理されます。

     シェルの組み込みコマンドは、新たなプロセスを spawn せずにシェルの内部で実
     行されます。2 種類の組み込みコマンドがあります: 通常と特別です。それらの
     実行が終了した後に、特別な組み込みが持続する前に割り当てます、割り当てエ
     ラー、リダイレクトエラーと特定のオペランドエラーによって、スクリプトは、
     アボートされます。関数で特別な組み込み関数をを上書きすることはできませ
     ん。通常と特別の組み込みの両方は、通常のプログラムができない方法で、シェ
     ルに影響することができます。

     そのほかの点で、コマンド名が関数または組み込みコマンドと一致しないなら、
     コマンドは、(次のセクションで説明されるように) ファイルシステムの通常のプ
     ログラムとして検索されます。通常のプログラムが実行されるとき、シェルは、
     引数と環境をプログラムに渡して、プログラムを実行します。プログラムが、通
     常の実行形式ファイル (すなわち、ASCII 表現が ``#!'' である ``マジックナン
     バ'' から始まらず、execve(2) から ENOEXEC の返り値の結果となるなら) では
     ないけれども、テキストファイルであると思われるなら、シェルは、それを解釈
     するために、sh の新しいインスタンスを実行します。

     この文書の以前のバージョンとソースコード自体は、``シェル手続き'' として、
     マジックナンバなしのシェルスクリプトを、誤解されやすく、散発的に参照する
     ことに注意してください。

   パス検索
     コマンドを見つけるとき、シェルは、その名前がシェル関数であるかどうか確か
     めるために最初に調べます。次に、その名前で組み込みコマンドを検索します。
     組み込みコマンドが見つからないなら、次の 2 つの 1 つが、起こります:

     1.   スラッシュを含んでいるコマンド名は、あらゆる検索を行なわずに、単に実
          行されます。

     2.   シェルは、コマンドの順序で PATH 変数の各エントリを検索します。PATH
          変数の値は、コロンによって区切られた一連のエントリであるべきです。各
          エントリは、ディレクトリ名から成ります。カレントディレクトリは、空の
          ディレクトリ名、または明示的に単一のピリオドによって暗黙に指示されま
          す。

   コマンドの終了ステータス
     各コマンドには、他のシェルコマンドの振る舞いに影響することができる終了ス
     テータスがあります。例として、コマンドは、通常または成功に対して 0 で終了
     し、失敗、エラーまたは誤りに対して 0 以外で終了することです。各コマンドの
     ためのマニュアルページは、様々な終了コードとそれらが意味しているものを示
     すべきです。さらに、組み込みコマンドは、実行されたシェル関数が行うよう
     に、終了コードを返します。

     コマンドがシグナルによって終了するなら、その終了ステータスは、128 を超え
     ます。kill -l に終了ステータスを渡すことによってシグナル名を見つけること
     ができます。

     コマンドの単語がないなら、数量ステータスは、実行された最後のコマンドの置
     換の終了ステータスで、コマンドがあらゆるコマンドの置換を含んでいないな
     ら、0 です。

   複合コマンド (Complex Commands)
     複合コマンドは、より大きな複合コマンドをともに作成して、制御演算子または
     キーワードがある単純なコマンドの組み合わせです。より一般的に、コマンド
     は、次の 1 つです:

           単純なコマンド

           パイプライン

           リストまたは複合リスト

           複合コマンド

           関数定義

     特に指定のない限り、コマンドの終了ステータスは、コマンドによって実行され
     る最後の単純なコマンドの終了ステータスで、単純なコマンドが実行されなかっ
     たなら、0 です。

   パイプライン
     パイプラインは、制御演算子 `|' によって区切られた 1 つ以上のコマンドの
     シーケンスです。最後のコマンドを除いてすべての標準出力は、次のコマンドの
     標準入力に接続されます。最後のコマンドの標準出力は、いつものとおりに、
     シェルから継承されます。

     パイプラインの形式は、次の通りです:

           [!] command1 [| command2 ...]

     command1 の標準出力は、command2 の標準入力に接続されます。標準入力、標準
     出力、またはコマンドの両方は、コマンドの一部であるリダイレクト演算子に
     よって指定されるあらゆるリダイレクトの前にパイプラインによって割り当てら
     れると見なされます。

     いくつかの他のシェルと違って、sh は、サブシェル環境の 2 つ以上のコマンド
     でパイプラインの各プロセスを実行し、sh プロセスの子プロセスとして実行する
     ことに注意してください。

     パイプラインが、(後で議論される) バックグラウンドでないなら、シェルは、す
     べてのコマンドが完了することを待ちます。

     キーワード ! がパイプラインに先行しないなら、終了ステータスは、パイプライ
     ンで指定された最後のコマンドの終了ステータスです。そうでなければ、終了ス
     テータスは、最後のコマンドの終了ステータスの論理的な否定 (NOT) です。すな
     わち、最後のコマンドが 0 を返すなら、終了ステータスは、1 です。最後のコマ
     ンドが 0 より大きな値を返すなら、終了ステータスは、0 です。

     標準入力または標準出力または両方のパイプラインの割り当ては、リダイレトの
     前に行われるので、リダイレトによって修正することができます。例えば:

           command1 2>&1 | command2

     command1 の標準出力と標準エラーの両方を command2 の標準入力に送ます。

     `;' または改行の終端文字によって、先行する AND-OR リスト (下記の「短絡リ
     スト演算子」と呼ばれるセクションに記述される) は、順次実行されます。`&'
     は、先行する AND-OR リストの非同期の実行を引き起こします。

   バックグラウンドコマンド (&)
     コマンドが制御演算子アンパサンド (`&') によって終了されるなら、シェルは、
     サブシェル環境 (以下の「コマンドのグループ化」を参照) でコマンドを非同期
     に実行します。シェルは、次のコマンドを実行する前にコマンドが終了するのを
     待ちません。

     バックグラウンドでコマンドを実行するための形式は、次の通りです:

           command1 & [command2 & ...]

     シェルが対話型でないなら、非同期コマンドの標準入力は、/dev/null に設定さ
     れます。

     終了ステータスは、0 です。

   リスト (一般的に言えば)
     リストは、改行、セミコロンまたはアンパサンドによって区切られた 0 個以上の
     コマンドのシーケンスで、オプションで、これらの 3 つの文字の 1 つによって
     終了します。リストのコマンドは、それらに書かれた順序で実行されます。コマ
     ンドにアンパサンドが続くなら、シェルは、コマンドを開始して、直ちに次のコ
     マンドに進みます。そうでなければ、次のものに進む前にコマンドが終了するこ
     とを待ちます。

   短絡リスト演算子 (Short-Circuit List Operators)
     ``&&'' と ``||'' は、AND-OR リスト演算子です。``&&'' は、最初のコマンドを
     実行し、次に、最初のコマンドの終了ステータスが 0 であるなら、2 番目のコマ
     ンドを実行します。``||'' も同様ですが、最初のコマンドの終了ステータスが 0
     でなくても、2 番目のコマンドを実行します。``&&'' と ``||'' の両方には、同
     じ優先度があります。

   フロー制御構成 (if, while, for, case)
     if コマンドの構文は、次の通りです:
           if list
           then list
           [elif list
           then list] ...
           [else list]
           fi

     終了ステータスは、選択された then または else のリストの終了ステータス
     で、リストが選択されなかったなら、0 です。

     while コマンドの構文は、次の通りです:
           while list
           do list
           done

     2 つのリストは、最初のリストの終了ステータスが 0 である間に、繰り返し実行
     されます。until コマンドは、同様ですが、最初のリストの終了ステータスが 0
     であるまで、それを繰り返す while の代わりに単語 until があります。

     終了ステータスは、2 番目のリストの最後の実行の終了ステータスで、それが実
     行されなかったなら、0 です。

     for コマンドの構文は、次の通りです:
           for variable [in word ...]
           do list
           done

     in と続く単語が省略されるなら、in "$@" が代わりに使用されます。単語は、拡
     張され、次に、リストは、各単語を順番に変数に設定して繰り返し実行されま
     す。dodone コマンドは、`{' と `}' で置き換えられます。

     breakcontinue コマンドの構文は、次の通りです:
           break [num]
           continue [num]

     break コマンドは、num 番目の内側の for または while ループを終了します。
     continue コマンドは、(num 番目の) 内側のループの次の繰り返しを継続しま
     す。訳注: (num 番目の) は、翻訳で追加しました。これらは、特別の組み込みコ
     マンドとして実装されています。

     case コマンドの構文は、次の通りです:
           case word in
           pattern) list ;;
           ...
           esac

     pattern (パターン) は、実際に `|' 文字によって区切られた 1 つ以上のパター
     ン (後で説明される「シェルパターン」を参照) を指定することができます。チ
     ルダ拡張、パラメータ拡張、コマンド置換、算数演算と引用文の削除は、その単
     語に適用されます。次に、各パターンは、順番にチルダ拡張、パラメータ拡張、
     コマンド置換と算数演算を使用して拡張され、その単語の拡張形は、それに対し
     てチェックされます。マッチが見つけられるなら、対応するリストが実行されま
     す。選択されたリストが `;;' の代わりに制御演算子 `;&' で終了するなら、実
     行は、次のリストを続行し、リストが `;;' または case コマンドで終るまで、
     続行されます。

   コマンドのグループ化
     コマンドは、次のいずれかを書くことによってグループ化されます。

           (list)

     または、

           { list; }

     最初の形式は、サブシェル環境でコマンドを実行します。サブシェル環境には、
     それ自体に次のコピーがあります:

     1.   cd によって設定される現在の作業 (カレントワーキング) ディレクトリ。

     2.   umask によって設定されるファイル作成マスク。

     3.   ulimit によって設定されるリソースの制限。

     4.   オープンされたファイルへの参照。

     5.   trap によって設定されるトラップ。

     6.   知られているジョブ。

     7.   位置パラメータと変数。

     8.   シェルオプション。

     9.   シェル関数。

     10.  シェルエイリアス。

     これらは、トラップされる (が、無視されない) シグナルがデフォルトのアク
     ションにリセットされ、知られているジョブがクリアされることを除いて、親の
     シェル環境からコピーされます。どのような変更も親のシェル環境に影響しませ
     ん。

     サブシェル環境は、子供のプロセスまたは異なって実装されます。ジョブ制御が
     対話的なシェルで有効にされているなら、括弧でグループ化されたコマンドは、1
     つのユニット (単位) としてサスペンドして、継続することができます。

     他のシェルとの互換性のために、シーケンス中の 2 つの開き括弧は、空白類に
     よって分離されるべきです。

     2 番目の形式は、決して別のシェルを fork しないので、より少し効率的です。
     コマンドをグループにまとめるこの方法によって、ユーザは、あたかもそれらが
     1 つのプログラムであのように、それらの出力をリダイレクトすることができま
     す:

           { echo -n "hello"; echo " world"; } > greeting

   関数
     関数定義の構文は、次の通りです:

           name ( ) command

     関数定義は、実行可能な文です。実行されるとき、name と名前が付けられた関数
     を定義し、0 の終了状態を返します。command は、通常、`{' と `}' で囲まれた
     リストです。

     変数は、local コマンドを使用することによって関数にローカルとして宣言され
     ます。これは、関数の最初の文として現れるべきで、構文は、次の通りです:

           local [variable ...] [-]

     local コマンドは、組み込みコマンドとして実装されています。終了ステータス
     は、コマンドが関数でないか、または変数名が無効であるなら、0 です。

     変数がローカルにされるとき、初期の値と、それがあるなら、周辺のスコープの
     同じ名前で変数からのエクスポートされて読み込み専用のフラグを継承します。
     そうでなければ、変数は、最初に設定されません。変数 x が、関数 f でローカ
     ルに作成されるなら、g の内側で作成される変数 x を参照する関数 g への呼び
     出しは、x と名前が付けられたグローバル変数でない f の内側で宣言された変数
     x を参照できるように、シェルは、動的なスコープを使用します。

     ローカルに作成することができる唯一の特殊パラメータは、`-' です。`-' ロー
     カルを行うことは、関数が返るとき、それらのオリジナルの値に復旧される関数
     の内側の set コマンドを通して、変更される (長い名前があるだけであるそれら
     を含んで) あらゆるシェルのオプションの原因となります。

     return コマンドの構文は、次の通りです:

           return [exitstatus]

     それは、最も近い入れ子の関数またはソースされた (ソースコマンドで読み込ま
     れた) スクリプトから返って、現在の実行スコープを終了します。関数または
     ソースされたスクリプトが実行されていないなら、それは、シェルのインスタン
     スを終了します。return コマンドは、特別の組み込みコマンドとして実装されて
     います。

   変数とパラメータ
     シェルは、パラメータの集合を保持します。名前 (アルファベット、数値と下線
     だけから成り、アルファベットまたは下線で始まります) によって示されるパラ
     メータは、変数と呼ばれます。起動するとき、シェルは、有効な名前があるすべ
     ての環境変数をシェル変数に変えます。次の形式を使用して新しい変数を設定す
     ることができます。

           name=value

     また、以下で説明されるように数値または特殊文字によってパラメータを示すこ
     とができます。

     代入は、他の単語とは異なって展開されます: また、チルダ展開は、等号、と任
     意のコロンの後に行なわれ、ユーザ名も、コロンによって終了します、そして分
     割されるフィールドとパス名の展開は、行なわれません。

     この特別の拡張は、それら自体によって、またはコマンドの単語に先行する単純
     なコマンドを形成する割り当てだけでなく適応されますが、この形式がある
     export, local または readonly 組み込みコマンドに渡された単語も適応されま
     す。これについて、組み込みの名前は、(拡張の結果ではなく) リテラルでなけれ
     ばなりません、オプションのない command の 1 つ以上のリテラルのインスタン
     スによってオプションで先行されるかもしれません。

   位置パラメータ
     位置パラメータは、0 より大きな数値よって示されたパラメータです。シェル
     は、最初に、これらをシェルスクリプトの名前に続くコマンド行の引数の値に設
     定します。また、set 組み込みコマンドは、それらを設定するか、またはリセッ
     トするために使用することができます。

   特殊パラメータ
     特殊パラメータは、単一の特殊文字または数値 0 によって示されたパラメータで
     す。それらは、ちょうど、ユーザによってタイプされる入力またはシェルスクリ
     プトのソースに現れるように、次のリストで表示されます。

     $*      1 から始まる、位置パラメータを展開します。拡張がダブルクォートさ
             れた文字列内で起こるとき、IFS 変数の最初の文字によって、または
             IFS が設定されていないなら、空白によって、区切られた各パラメータ
             の値で単一のフィールドに展開します。

     $@      1 から始まる、位置パラメータに展開します。展開がダブルクォート内
             で起こるとき、各位置パラメータは、個別の引数として展開されます。
             位置パラメータがないなら、@ の展開は、@ が、ダブルクォートで囲ま
             れるときでさえ、0 個の引数を生成します。これが、基本的に意味して
             いるものは、例えば、$1 が ``abc'' であり、$2 が ``def ghi'' であ
             るなら、"$@" は、次の 2 つの引数に展開します。

                   "abc"   "def ghi"

     $#      位置パラメータの数に展開します。

     $?      最も最近のパイプラインの終了ステータスに展開します。

     $-      (ハイフン) set 組み込みコマンド、またはシェルによる暗黙の呼び出し
             で指定されるように、現在のオプションのフラグ (文字列に連結される
             単一文字オプション名) に展開します。

     $$      呼び出されるシェルのプロセス ID に展開します。サブシェルは、その
             親プロセスとして $ の同じ値を保持します。

     $!      現在のシェルから実行された最も最近のバックグラウンドのコマンドの
             プロセス ID に展開します。パイプラインについて、プロセス ID は、
             パイプラインの最後のコマンドのプロセス ID です。このパラメータが
             参照されるなら、シェルは、wait 組み込みコマンドがプロセスの完了を
             報告するまで、プロセス ID とその終了ステータスを覚えています。

     $0      (ゼロ) コマンド行で渡されるなら、シェルスクリプトの名前に、(-c を
             付けて) 与えられるなら、name オペランドに展開されます、そうでなけ
             れば、シェルに引数 0 が渡されます。

   特殊変数
     次の変数は、シェルによって設定されるか、または特別な意味があります:

     CDPATH    cd 組み込みコマンドで使用される検索パス。

     EDITOR    fc 組み込みコマンドで使用されるフォールバック (代替) エディタ。
               設定されてないなら、デフォルトのエディタは、ed(1) です。

     FCEDIT    fc 組み込みコマンドで使用されるデフォルトのエディタ。

     HISTSIZE  アクセス可能な以前のコマンドの数。

     HOME      チルダ展開と cd 組み込みコマンドのデフォルトのディレクトリとし
               て使用されるユーザのホームディレクトリ。

     IFS       入力フィールドのセパレータ。デフォルト値、<空白>, <タブ> と <改
               行> の順序です。また、この値は、IFS が未設定とされるなら、適用
               されますが、空の文字列に設定されるなら、適用されません。詳細に
               ついては、「空白類文字による分割 (フィールド分割)」セクションを
               参照してください。

     LINENO    スクリプトまたは関数の現在の行番号。

     MAIL      新しいメールの到着がないかどうかチェックされるメールファイルの
               名前。MAILPATH によって上書きされます。

     MAILPATH  着信メールがないかどうかシェルによってチェックされる、コロン
               (`:') で区切られたファイル名のリスト。この変数は、MAIL の設定を
               上書きします。一度に最大 10 個のメールボックスをモニタ (監視)
               することができます。

     OPTIND    getopts によって処理される次の引数のインデックス。これは、起動
               時に 1 に初期化されます。

     PATH      実行形式ファイルのためのデフォルト検索パス。詳細については、
               「パス検索」セクションを参照してください。

     PPID      呼び出されたシェルの親プロセス ID。この変数が環境変数にないな
               ら、起動時に設定されます。親プロセス ID の後の変更は、反映され
               ません。サブシェルは、PPID の同じ値を保持します。

     PS1       プライマリのプロンプト文字列で、利用者がスーパユーザでないなら
               ``$ '' がデフォルトです、スーパユーザなら、``# '' がデフォルト
               です。PS1 は、与えられた情報によって置き換えられる、次の書式化
               されたシーケンスのうちのいずれかを含んでいます:

               \H      このシステムの完全な形でのホスト名 (FQDN)。

               \h      このシステムのホスト名。

               \W      現在の作業 (カレントワーキング) ディレクトリの最後の構
                       成要素。

               \w      現在の作業 (カレントワーキング) ディレクトリの完全なパ
                       ス。

               \$      スーパユーザの状態。通常のユーザのための ``$ '' とスー
                       パユーザのための ``# ''。

               \\      リテラルのバックスラッシュ。

     PS2       セカンダリのプロンプト文字列で、``> '' がデフォルトです。PS2
               は、PS1 から書式化されたシーケンスのいずれかを含んでいます。

     PS4       (-x がアクティブであるなら) トレースの出力のための接頭辞。デ
               フォルトは、``+ '' です。

   単語展開
     この節は、単語で実行される様々な展開を説明しています。すべての展開が、後
     で説明されるように、すべての単語で実行されるわけではありません。

     単一の単語内で起こる、チルダ展開、パラメータ展開、コマンド置換、算術の展
     開と引用の削除は、単一のフィールドに展開します。単一の単語から複数の
     フィールドを作成することができるフィールドの分割またはパス名の展開のみで
     す。この規則の 1 つの例外は、上に説明された、ダブルクォート内の特殊パラ
     メータ @ の展開です。

     単語展開の順序は、次の通りです:

     1.   チルダ展開、パラメータ展開、コマンド置換、算術の展開 (これらすべて
          は、同時に起こります)。

     2.   フィールドの分割は、IFS 変数が空 (null) でないなら、(1) のステップに
          よって生成されるフィールドで実行されます。

     3.   パス名の展開 (実際に -f オプションがないなら)。

     4.   引用の削除。

     `$' 文字は、パラメータ展開、コマンド置換、または算術の展開を導入するため
     に使用されます。

   チルダ展開 (ユーザのホームディレクトリ名に置換)
     引用されないチルダ文字 (`~') で始まる単語は、チルダ展開されます。スラッ
     シュ (`/') まで、または単語の終わりまでのすべての文字は、ユーザ名として扱
     われ、ユーザのホームディレクトリに置き換えられます。(~/foobar のように)
     ユーザ名が不足しているなら、チルダは、HOME 変数の値 (現在のユーザのホーム
     ディレクトリ) に置き換えられます。

   パラメータ展開
     パラメータ展開の形式は、次の通りです:

           ${expression}

     ここで、expression は、対応した `}' までのすべての文字です。バックスラッ
     シュによってエスケープさるか、または、シングルクォートまたはダブルクォー
     トの中の任意の `}' と、数式展開に埋め込まれた文字、コマンド置換と変数展開
     は、マッチする `}' を決定する上で調べられません。`+', `-', `=' または `?'
     がある異形がダブルクォートに囲まれた文字列内に現れるなら、展開として、(展
     開の内側のダブルクォートを通して) 引用されない部分となるかもしれません。
     そのような部分内の `}' も、マッチする `}' を決定する上で調べられません。

     パラメータ展開の形式のうちもっとも単純なものは、次の通りです:

           ${parameter}

     parameter に値があるなら、置き換えられます。

     2 つ以上の数値がある位置パラメータまたはパラメータに、名前の一部として解
     釈される文字が続いているときを除いて、オプションである、パラメータ名また
     はシンボルを、大括弧に囲むことができます。パラメータ展開が起こるなら、ダ
     ブルクォートの内側です:

     1.   フィールドの分割は、特殊パラメータ @ を除いて展開の結果で実行されま
          せん。

     2.   パス名の展開は、展開の結果で実行されません。

     さらに、パラメータの展開は、次の形式の 1 つを使用することによって修正する
     ことができます。

     ${parameter:-word}
             デフォルト値を使用します。parameter が設定されていないか null
             (空) であるなら、word の展開は、置換されます。そうでなければ、
             parameter の値が置換されます。

     ${parameter:=word}
             デフォルト値を割り当てます。parameter が設定されていないか null
             (空) であるなら、word の展開は、parameter に割り当てられます。す
             べての場合に、parameter の最後の値は、置換されます。word の内側で
             引用することは、フィールドの分割またはパス名の展開を防止しませ
             ん。位置パラメータまたは特殊パラメータではない、変数だけをこのよ
             うな方法で割り当てすることはできません。

     ${parameter:?[word]}
             null (空) または設定されていないなら、エラーを示します。parameter
             が設定されていないか null (空) であるなら、word (または、word が
             省略されるなら、それを示しているメッセージは、未設定とされます)
             の展開は、標準エラーに書き込こまれ、シェルは、0 でない終了ステー
             タスで終了します。そうでなければ、parameter の値は、置換されま
             す。対話型シェルは、終了する必要はありません。

     ${parameter:+word}
             代替の値の使用します。parameter が設定されていないか null (空) で
             あるなら、null (空) は、置換されます。そうでなければ、word の展開
             は、置換されます。

     以前に表示されたパラメータの展開で、書式のコロンの使用は、設定されていな
     いか、または null (空) であるパラメータのためのテストの結果となります。コ
     ロンの省略は、単に設定されていないパラメータのためのテストの結果となりま
     す。

     word は、閉じ大括弧を引用するバックスラッシュが、引用の取り外しの間に、削
     除されることを除いて、囲まれている (引用されていない、ダブルクォートされ
     る、または、ヒアドキュメント) から引用のタイプを継承します。

     ${#parameter}
             文字列の長さ。parameter の値の文字単位の長さ。

     次の 4 種類のパラメータの展開は、部分文字列の処理のために提供されていま
     す。いずれの場合にも、正規表現の表記法ではないパターン照合の表記法 (シェ
     ルパターンを参照) は、パターンを評価するために使用されます。パラメータが
     特殊パラメータ * または @ の 1 つであるなら、展開の結果は、特定されませ
     ん。ダブルクォートで完全なパラメータの展開文字を囲むことは、引用される次
     の 4 種類のパターン文字の原因とならないのに対して、ブレース内の引用文字
     は、この効果があります。

     ${parameter%word}
             最少の接尾辞のパターンを削除する。word は、パターンを生成するため
             に展開されます。次に、パラメータの展開は、削除されたパターンと一
             致する接尾辞の最小の部分である parameter の結果となります。

     ${parameter%%word}
             最大の接尾辞のパターンを削除する。word は、パターンを生成するため
             に展開されます。次に、パラメータの展開は、削除されたパターンと一
             致する接尾辞の最大の部分である parameter の結果となります。

     ${parameter#word}
             最小の接頭辞のパターンを削除する。word は、パターンを生成するため
             に展開されます。次に、パラメータの展開は、削除されたパターンと一
             致する接頭辞の最小の部分である parameter の結果となります。パラ
             メータ拡張は、その時、削除されたパターンがマッチしている接頭辞の
             最も小さい部分によってパラメータを結果として生じます。

     ${parameter##word}
             最大の接頭辞のパターンを削除する。word は、パターンを生成するため
             に展開されます。次に、パラメータの展開は、削除されたパターンと一
             致する接頭辞の最大の部分である parameter の結果となります。

   コマンド置換
     コマンド置換によって、コマンド名自体の代わりにコマンドの出力を置き換える
     ことができます。コマンド置換は、次のように、コマンド (command) が囲まれた
     とき起こります:

           $(command)

     またはバッククォートバージョンは、次の通りです:

           `command`

     シェルは、コマンドを実行し、コマンドの標準出力でコマンドの置換を置き換
     え、置換の終わりで 1 以上の改行シーケンスを削除して、コマンドの置換を展開
     します。出力の終りの前に埋め込まれた改行は、削除されません。しかしなが
     ら、フィールドの分割の間に、それらは、IFS の値と実際に、それを引用するこ
     とに依存して空白に変換されます。組み込みコマンド jobid, jobstrap が、
     親のシェル環境に関する情報を返し、コマンドの置換で唯一のコマンドであるな
     ら、times が、同じプロセスに関する情報を返すことを除いて、コマンドは、サ
     ブシェル環境で実行されます。

     $( 形式のコマンドの置換がサブシェルで始まるなら、$( と ( は、数式展開での
     曖昧さを回避するために、空白類によって分離されななければなりません。

   数式展開
     数式展開は、数式を評価し、その値を置換するためのメカニズムを提供していま
     す。数式展開のための形式は、次の通りです:

           $((expression))

     数式 expression は、その中のダブルクォート文字が特別扱いを受けないという
     点を除いては、ダブルクォート文字で囲まれている文字列と同様に扱われます。
     シェルは、パラメータ展開、コマンド置換、数式展開と引用の削除のための
     expression 中のすべてのトークンを展開します。

     許可された式は、以下のように要約された、C の式のサブセットです。

           値         すべての値は、タイプ intmax_t にあります。

           定数       10 進数、8 進数 (0 から始まる) と 16 進数 (0x から始ま
                      る) 整定数。

           変数       シェル変数を読み込み書き込みでき、整定数を含むことができ
                      ます。

           単項演算子
                      ! ~ + -

           2 項演算子
                      * / % + - << >> < <= > >= == != & ^ | && ||

           代入演算子
                      = += -= *= /= %= <<= >>= &= ^= |=

           条件演算子
                      ? :

     数式の結果は、10 進数に置換されます。

   空白類文字による分割 (フィールド分割)
     特定のコンテキストで、パラメータ展開、コマンド置換と数式展開の後、シェル
     は、フィールド分割のためにダブルクォート内で起こらない展開と置換の結果を
     スキャンし、複数のフィールドの結果になるかもしれません。

     空白類 (<空白>, <タブ> と <改行>) である、IFS の文字は、IFS 中の他文字と
     異なって扱われます。

     単語の始めまたは終わりの IFS 中の空白類は、廃棄されます。

     続いて、フィールドは、次のいずれかによって区切られます:

     1.   それを囲む IFS 中の任意の空白類がある IFS 中の空白類でない文字。また
          は、

     2.   IFS 中の 1 つ以上の空白類の文字。

     単語が IFS 中の空白類でない文字で終わるなら、この文字の後に空のフィールド
     はありません。

     フィールドが区切られていないなら、単語は、廃棄されます。特に、単語が引用
     されていない置換のみからなり、置換の結果が空であるなら、IFS が空であって
     も、フィールドの分割によって削除されます。

   パス名の展開 (ファイル名生成)
     -f オプションが設定されないなら、ファイル名の生成は、単語の分割が完了した
     後に、実行されます。各単語は、スラッシュによって区切られた一連のパターン
     とみなされます。展開プロセスは、各パターンを指定されたパターンと一致する
     文字列と置き換えることに書式化することができる名前がある、すべての既存の
     ファイルの名前と単語を置き換えます。これには、2 つの制限があります: 最初
     に、パターンは、スラッシュを含んでいる文字列と一致することができず、2 番
     目に、パターンは、パターンの最初の文字がピリオドでないなら、ピリオドで始
     まる文字列と一致することはできません。次のセクションは、パス名の展開のた
     めに使用されるパターン、部分文字列処理のための 4 種類のパラメータの展開と
     case コマンドを説明しています。

   シェルパターン
     パターンは、それら自体と一致する通常の文字とメタキャラクタから成ます。メ
     タキャラクタは、`*', `?' と `[' です。これらの文字は、引用されるなら、そ
     れらの特別な意味を失います。コマンドまたは変数の置換が実行され、ドル記号
     またはバッククォートがダブルクォートで囲まれないとき、変数の値またはコマ
     ンドの出力は、これらの文字のためにスキャンされ、それらは、メタキャラクタ
     に変化されます。

     アスタリスク (`*') は、あらゆる文字列と一致します。疑問符 (`?') は、あら
     ゆる単一文字と一致します。左大括弧 (`[') は、文字クラスを導入します。文字
     クラスの終わりは、`]' によって示されます。`]' が見つからないなら、`['
     は、文字クラスを導入するのではなく `[' と一致します。文字クラスは、大括弧
     の間の文字のいずれかの文字に一致します。文字のロケール依存の範囲は、マイ
     ナス記号を使用して指定されます。名前付きクラスの文字 (wctype(3) 参照)
     は、`[:' と `:]' で名前を囲むことよって指定されます。例えば、
     `[[:alpha:]]' は、単一の文字にマッチするシェルのパターンです。感嘆符
     (exclamation point) (`!') を文字クラスの最初の文字にすることによって、文
     字クラスの意味を反転します。キャレット (`^') は、同じ効果がありますが、標
     準的ではありません。

     文字クラスに `]' を含めるために、(もしあるなら、`!' または `^' の後に) リ
     ストされた最初の文字にします。`-' を含めるために、リストされた最初か、ま
     たは最後の文字にします。

   組み込みコマンド
     このセクションは、組み込みコマンドをリストしています。

     :       リターン 0 (真) の終了値を返す無効 (null) のコマンド。

     . file  指定されたファイル (file) のコマンドは、シェルによって読み込まれ
             て、実行されます。return コマンドは、. コマンドの呼び出し側に返る
             ために使用されます。file に任意の `/' 文字を含んでいるなら、それ
             は、そのまま使用されます。そうでなければ、シェルは、ファイルに対
             して PATH を検索します。それが PATH に見つからないなら、それは、
             現在の作業 (カレントワーキング) ディレクトリを探します。

     [       test(1) と同様な組み込みコマンド。

     alias [name[=string] ...]
             name=string が指定されるなら、シェルは、値 string があるエイリア
             ス name を定義します。単に name が指定されるなら、エイリアス name
             の値が印刷 (表示) されます。引数なしで、alias 組み込みコマンド
             は、すべての定義されたエイリアスの名前と値を印刷 (表示) します
             (unalias を参照)。エイリアスの値は、シェルへの再入力に適切となる
             ように、適切な引用で書かれます。また、「エイリアス」サブセクショ
             ンを参照してください。

     bg [job ...]
             バックグラウンドで指定されたジョブ (または、ジョブが与えられない
             なら、現在のジョブ) を継続します。

     bind [-aeklrsv] [key [command]]
             行編集のキーバインドを表示するか、または変更します。このコマンド
             は、editrc(5) で説明されています。

     break [num]
             「フロー制御構成」のサブセクションを参照してください。

     builtin cmd [arg ...]
             指定された組み込みコマンド cmd を実行します。ユーザが、組み込みコ
             マンドと同じ名前でシェル関数をオーバライドすることを望むとき、こ
             れは、役に立ちます。

     cd [-L | -P] [-e] [directory]

     cd -    directory が指定されないなら、HOME 環境変数で指定されたディレクト
             リに、または directory- であるなら、OLDPWD 環境変数で指定され
             た directory に切り換えます。directory/, . または .. で始まら
             ないなら、CDPATH 変数でリストされたディレクトリは、指定された
             directory が検索されます。CDPATH が設定されていないなら、カレント
             ディレクトリが、検索されます。CDPATH の形式は、PATH のものと同じ
             です。対話型のシェルで、cd コマンドは、CDPATH メカニズムが使用さ
             れたか、または、directory- であったなら、実際切り換えるディレ
             クトリの名前を印刷 (表示) します。

             -P オプションが指定されるなら、.. は、物理的に扱われ、シンボリッ
             クリンクは、.. 構成要素が処理される前に、解決されます。-L オプ
             ションが指定されるなら、.. は、論理的に扱われます。これは、デフォ
             ルトです。

             -e オプションによって、cd は、新しいディレクトリのフルパス名が正
             確にまたは少しも決定できないなら、終了ステータス 1 を返します。通
             常、これは、エラーと見なされませんが、警告は、印刷 (表示) されま
             す。

     chdir   cd 組み込みコマンドの同義語。

     command [-p] [utility [argument ...]]

     command [-p] -v utility

     command [-p] -V utility
             呼び出しの最初の形式は、検索でのシェル関数を無視して、指定された
             utility を実行します。utility が特別の組み込みコマンドであるな
             ら、あたかも正常な組み込みコマンドであるかのように、それは、実行
             されます。

             -p オプションが指定されるなら、コマンドの検索は、標準ユーティリ
             ティのすべてを見つけることが保証される PATH のデフォルト値を使用
             して実行されます。

             -v オプションが指定されるなら、utility は、実行されませんが、シェ
             ルによって解釈された記述が印刷 (表示) されます。普通のコマンドで
             は、出力は、パス名です。シェルの組み込みコマンド、シェル関数と
             キーワード関しては、名前だけが書き込まれます。エイリアスは、
             ``alias name=value'' として印刷 (表示) されます。

             -V オプションは、出力を除いて -v と同様です。それは、``utility is
             description'' を印刷 (表示) します、ここで、description は、
             utility へのパス名、特別なシェル組み込み、シェル組み込み、シェル
             関数、シェルキーワードまたは value のエイリアスです。

     continue [num]
             「フロー制御構成」のサブセクションを参照してください。

     echo [-e | -n] [string ...]
             標準出力に空白で区切られた引数のリストを印刷 (表示) し、改行文字
             を付け加えます。

             -n      後続する改行の出力を抑制します。

             -e      C スタイルのバックスラッシュのエスケープシーケンスを処理
                     します。echo コマンドは、次の文字エスケープを理解します:

                     \a      警告する (端末のベルを鳴らす)

                     \b      バックスペース

                     \c      後続する改行を抑制します (これは、改行が最後の文
                             字でないなら、行が切り詰められる副作用があります)

                     \e      ESC 文字 (ASCII 0x1b)

                     \f      フォームフィード

                     \n      改行

                     \r      キャリッジリターン

                     \t      水平タブ

                     \v      垂直タブ

                     \\      定数バックスラッシュ

                     \0nnn   (0 は、ゼロ) 8 進数値が nnn である文字

                     string が引用で囲まれないなら、バックスラッシュそれ自体
                     は、シェルからそれを保護するためにバックスラッシュでエス
                     ケープされなければなりません。例えば、次の通りです:

                           $ echo -e "a\vb"
                           a
                            b
                           $ echo -e a\\vb
                           a
                            b
                           $ echo -e "a\\b"
                           a\b
                           $ echo -e a\\\\b
                           a\b

             -e-n オプションの 1 つだけが指定できます。

     eval string ...
             空白ですべての引数を連結します。そして、コマンドを再解析し、実行
             します。

     exec [command [arg ...]]
             command が省略されないなら、シェルプロセスは、(シェル組み込みコマ
             ンドまたは関数ではなく、実際のプログラムでなければならない) 指定
             されたプログラムに置き換えられます。exec コマンドのあらゆるリダイ
             レトは、exec コマンドが終了するとき、それらを取り消すことができな
             いように、永久的としてマークされます。

     exit [exitstatus]
             シェルプロセスを終了します。exitstatus が指定されるなら、これは、
             シェルの終了ステータスになります。そうでなければ、シェルが EXIT
             トラップを実行しているなら、トラップの前の最後のコマンドの終了ス
             テータスが使用されます。シェルがシグナルのためのトラップを実行し
             ているなら、シェルは、それ自体にシグナルを再送することによって、
             終了します。そうでなければ、前のコマンドの終了ステータスが使用さ
             れます。終了ステータスは、0 と 255 の間の整数であるべきです。

     export name ...

     export [-p]
             指定された名前は、それらが後のコマンドの環境に現われることができ
             るように、エクスポートされます。変数をエクスポートしないただ一つ
             の方法は、それを unset することです。シェルによって、次のように書
             くことによってエクスポートされると同時に変数の値を設定さすること
             ができます。

                   export name=value

             引数を指定しないなら、export コマンドは、すべてのエクスポートされ
             ている名前を表示します。-p オプションが指定されるなら、エクスポー
             トされる変数は、シェルへの再入力に適切な、``export name=value''
             行として印刷 (表示) されます。

     false   0 以外 (偽) の終了値を返す null コマンド。

     fc [-e editor] [first [last]]

     fc -l [-nr] [first [last]]

     fc -s [old=new] [first]
             fc 組み込みコマンドは、以前に対話型なシェルに入ったコマンドをリス
             トするか、または編集して、再実行します。

             -e editor
                     コマンドを編集するために editor よって指定されたエディタ
                     を使用します。editor 文字列は、PATH 変数を通して検索され
                     るコマンド名です。FCEDIT 変数の値は、-e が指定されなかっ
                     たとき、デフォルトとして使用されます。FCEDIT が空 (null)
                     であるか、または設定されていないなら、EDITOR 変数の値が使
                     用されます。EDITOR が空 (null) であるか、または設定されて
                     いないなら、ed(1) は、エディタとして使用されます。

             -l (エル)
                     それらでエディタを起動するのではなくコマンドをリストしま
                     す。コマンドは、コマンド番号が前につけられた各コマンドで
                     -r によって影響されるように、firstlast のオペランドに
                     よって示された順序で書き込まれます。

             -n      -l でリストされるとき、コマンドの番号を抑制します。

             -r      (-l で) リストされるコマンド、または (-l でもなく -s でも
                     ない) 編集される順序を反転します。

             -s      エディタを起動せずに、コマンドを再実行します。

             first

             last    リストするか、または編集するコマンドを選択します。アクセ
                     スすることができる以前のコマンドの数は、HISTSIZE 変数の値
                     によって決定されます。first または last または両方の値
                     は、次の 1 つです:

                     [+]num  コマンド番号を表わす正の数。-l オプションでコマン
                             ド番号を表示することができます。

                     -num    以前のコマンドの実行された num であったコマンドを
                             表わす負の 10 進数。例えば、-1 は、直前のコマンド
                             です。

                     string  その文字列から始まる最も最近入力されたコマンドを
                             示す文字列。old=new オペランドも -s で指定されな
                             いなら、最初のオペランドの文字列の形式は、埋め込
                             まれた等号を含むことができません。

             次の変数は、fc の実行に影響を与えます:

             FCEDIT    履歴 (ヒストリ) 編集に使用するエディタの名前。

             HISTSIZE  アクセス可能なコマンド数

     fg [job]
             指定された job または現在のジョブをフォアグラウンドに移動します。

     getopts optstring var
             POSIX getopts コマンド。getopts コマンドは、古い getopt(1) コマン
             ドを非推奨とします。最初の引数は、一連の文字であるべきで、それぞ
             れ、オプションが引数を取ることを示すコロンが続きます。指定された
             変数は、解析されたオプションに設定されます。次の引数のインデック
             スは、シェル変数 OPTIND に置かれます。オプションが引数を取るな
             ら、それは、シェル変数 OPTARG に置かれます。無効のオプションに遭
             遇するなら、var は、`?' に設定されます。それは、オプションの終わ
             りに遭遇するとき、偽の値 (1) を返します。引数の新しい集合は、
             OPTIND=1 を割り当てることによって構文解析されます。

     hash [-rv] [command ...]
             シェルは、コマンドの位置を記憶しているハッシュテーブルを維持して
             います。引数が何も指定されないと hash コマンドは、このテーブルの
             内容を印刷 (表示) します。

             引数を指定すると、hash コマンドは、各指定された command を、(それ
             らが関数でないなら) ハッシュテーブルから削除し、次に、それを検索
             します。-v オプションで、hash は、それらを見つけるように、コマン
             ドの位置を印刷 (表示) します。-r オプションによって、hash コマン
             ドは、関数を除いてハッシュテーブルのすべてのエントリを削除しま
             す。

     jobid [job]
             指定された job のプロセスのプロセス ID を印刷 (表示) します。job
             引数が省略されるなら、現在のジョブを使用します。

     jobs [-lps] [job ...]
             指定されたジョブ、または job 引数が与えられないなら、すべてのジョ
             ブに関する情報を印刷 (表示) します。印刷 (表示) される情報には、
             ジョブ ID、ステータスとコマンド名を含みます。

             -l オプションが指定されるなら、各々のジョブの PID も表示されま
             す。-p オプションが指定されるなら、プロセスグループのリーダのため
             のプロセス ID だけが 1 行あたり 1 つ印刷 (表示) されます。-s オプ
             ションが指定されるなら、ジョブコマンドの PID だけが 1 行あたり 1
             つ印刷されます。

     kill    ジョブへのシグナルの送信のサポートを追加した kill(1) の同等物で
             す。

     local [variable ...] [-]
             「関数」を参照してください。

     printf  組み込みの printf(1) と同等物。

     pwd [-L | -P]
             カレントディレクトリのパスを印刷 (表示) します。組み込みコマンド
             は、それを毎回再計算するのではなくカレントディレクトリが何である
             かを覚えているので、同じ名前のプログラムと異なるかもしれません。
             これは、それをより速く行います。しかしながら、カレントディレクト
             リが名前を変更されるなら、pwd(1) の組み込みバージョンは、ディレク
             トリに対して古い名前を印刷 (表示) し続けます。

             -P オプションが指定されるなら、シンボリックリンクは、解決されま
             す。-L オプションが指定されるなら、シェルが覚えているカレントディ
             レクトリが、印刷 (表示) されます (シンボリックリンクは、解決され
             ません)。これは、デフォルトです。

     read [-p prompt] [-t timeout] [-er] variable ...
             -p オプションが指定され、標準入力が端末であるなら、prompt (プロン
             プト) が印刷 (表示) されます。次に、行は、標準入力から読み込まれ
             ます。後続する改行は、行から削除され、行は、上記の「空白類文字に
             よる分割 (フィールド分割)」とのセクションで説明されるように分割さ
             れ、その要素は、順番に変数に割り当てられます。変数より多い要素が
             あるなら、(それらを分離した IFS の文字とともに) 残りの要素は、最
             後の変数に割り当てられます。要素より多くの変数があるなら、残りの
             変数は、空の文字列に割り当てられます。

             バックスラッシュは、-r オプションが指定されないなら、特別に扱われ
             ます。バックスラッシュに改行が続いているなら、バックスラッシュと
             改行は、削除されます。バックスラッシュに何かの他の文字が続いてい
             るなら、バックスラッシュは、削除され、続く文字は、たとえそれが
             IFS に含まれていても、まるでそれが含まれていないかのように扱われ
             ます。

             -t オプションが指定され、完全な行の入力が供給される前に、timeout
             が経過するなら、read コマンドは、あたかもどんな値も割り当てずに、
             SIGALRM によって終了するかのような終了ステータスを返します。
             timeout 値は、秒、分、または時間を明示的に指定するために、`s',
             `m' または `h' のうちの 1 つをオプションで続けることができます。
             何も供給されないなら、`s' が仮定されます。

             -e オプションは、古いスクリプトとの後方互換性のためだけに存在しま
             す。

             終了ステータスは、成功すれば、0、ファイルの終りなら、1、エラーが
             生じるなら、2 と 128 の間、そしてトラップされたシグナルが read に
             割り込むなら、128 を超えた値です。

     readonly [-p] [name ...]
             各指定された name は、その後に修正したり、設定を取り消すことがで
             きないので、読み込み専用としてマークされます。シェルによって、次
             の形式を使用することによって読み込み専用としてマークされると同時
             に、変数の値を設定することができます。

                   readonly name=value

             引数なしで、readonly コマンドは、すべての読み込み専用の変数の名前
             をリストします。-p オプションが指定されるなら、読み込み専用の変数
             は、シェルへの再入力に適している、``readonly name=value'' 行とし
             て印刷 (表示) されます。

     return [exitstatus]
             「関数」サブセクションを参照してください。

     set [-/+abCEefIimnpTuVvx] [-/+o longname] [-c string] [-- arg ...]
             set コマンドは、次の 3 つの異なった機能を実行します:

             引数なしで、すべてのシェル変数の値をリストします。

             オプションが与えられるなら、短い形式または長い ``-/+o longname''
             形式を使用して、「引数リストの処理」と呼ばれるセクションで記述さ
             れるように、指定されたオプションを設定するか、またはクリアしま
             す。

             ``--'' オプションが指定されるなら、set は、シェルの位置パラメータ
             を続く引数と置き換えます。引数が ``--'' オプションに続いていない
             なら、クリアされ、それは、すべての位置パラメータが、コマンド
             ``shift $#'' を実行することと同等です。``--'' フラグは、位置の置
             換パラメータとして使用される引数を指定するとき、省略されます。最
             初の引数は、set コマンドがオプションを有効にするか、または無効す
             る要求として解釈する、ダッシュ (`-') またはプラス (`+') で始まる
             ので、これは、推奨されません。

     setvar variable value
             指定された value を指定された variable に代入します。setvar コマ
             ンドは、値を名前がパラメータとして渡される変数に代入する関数で使
             用されることを目的としています。一般的に、setvar を使用するのでは
             なく、``variable=value'' と書くほうが良いでしょう。

     shift [n]
             位置パラメータを n 回シフトするか、または n が指定されないなら、1
             回シフトします。シフトは、$# の値が、1 減少して、$1 の値が $2 の
             値に、$2 の値が $3 の値に、その他いろいろ、設定します。移植性につ
             いて、shift は、シェルが異常終了するかもしれないので、0 の位置パ
             ラメタがあるなら、回避されるべきです。

     test    test(1) と同等の組み込みコマンド。

     times   シェルプロセスとその子供の実行に費やされた時間を印刷します。最初
             の出力行は、シェルプロセス自体のユーザとシステム時間を示し、2 番
             目の行は、子供のためのユーザとシステム時間を含んでします。

     trap [action] signal ...

     trap -l
             シェルは、あらゆる指定された signal が受信されるとき、action を解
             析し、実行します。シグナルは、名前または数値によって指定されま
             す。さらに、疑似シグナル EXIT は、シェルが終了するとき、実行され
             る action を指定するために使用できます。action は、空の文字列また
             はダッシュ (`-') でもかまいません。前者によって指定されたシグナル
             は、無視され、文字によって、デフォルトのアクションが取られます。
             action を省略することとシグナルの数だけを使用することは、デフォル
             トのアクションを要求するための別の方法です。サブシェルまたはユー
             ティリティの環境で、シェルは、デフォルトのアクションへのトラップ
             される (が、無視されない) シグナルをリセットします。trap コマンド
             は、シェルへの入口で無視されるシグナルへの効果はありません。

             オプション -l によって trap コマンドは、有効なシグナル名のリスト
             を表示します。

     true    0 の (真) の終了値を返すヌルコマンド。

     type [name ...]
             コマンドとして各 name を解釈し、コマンド検索の結果を印刷 (表示)
             します。指定できる結果は、次の通りです: シェルのキーワード、エイ
             リアス、特別なシェルの組み込み、シェルの組み込み、コマンド、追跡
             されたエイリアス (tracked alias) と not found (見つからない)。エ
             イリアスについて、エイリアスの展開は、印刷 (表示) されます。コマ
             ンドと追跡されたエイリアスについて、コマンドの完全なパス名が印刷
             (表示) されます。

     ulimit [-HSabcdfklmnopstuvw] [limit]
             リソースの制限 (getrlimit(2) を参照) を設定または表示します。
             limit が指定されるなら、指定されたリソースが、設定されます。そう
             でなければ、現在のリソースの値が、表示されます。

             -H が指定されるなら、ハードの制限が、設定されるか、または表示され
             ます。誰でもハードの制限を減少することを許可されますが、スーパ
             ユーザだけがそれを増加することできます。-S オプションは、代わり
             に、ソフトの制限を指定します。制限を表示するとき、-S または -H の
             1 つだけを、与えることができます。デフォルトは、ソフトの制限を表
             示することで、ハードとソフトの制限の両方を設定することです。

             オプション -a によって、ulimit は、すべてのリソースを表示します。
             パラメータ limit は、このモードで受け付けられません。

             残りのオプションは、どのリソース値が、表示されるか、または修正さ
             れるかを指定します。それらは、相互に排他的です。

             -b sbsize
                     ソケットバッファの使用量のバイト単位の最大のサイズ。

             -c coredumpsize
                     512 バイトブロック単位のコアダンプファイルの最大のサイ
                     ズ。

             -d datasize
                     キロバイト単位のプロセスのデータセグメントの最大のサイ
                     ズ。

             -f filesize
                     512 バイトブロック単位のファイルの最大のサイズ。

             -k kqueues
                     このユーザ ID のための kqueue (kqueue(2) を参照) の最大
                     数。

             -l lockedmem
                     プロセスによってロックすることができるキロバイト単位の最
                     大のメモリのサイズ。

             -m memoryuse
                     プロセスのキロバイト単位の最大の常駐セットサイズ。

             -n nofiles
                     プロセスによってオープンされる記述子の最大の数。

             -o umtxp
                     このユーザ ID のためのプロセスの共有されたロック
                     (pthread(3) を参照) の最大の数。

             -p pseudoterminals
                     このユーザ ID のための疑似端末の最大の数。

             -s stacksize
                     スタックセグメントのキロバイト単位の最大のサイズ。

             -t time
                     各プロセスによって使用される秒単位の CPU 時間の最大の量。

             -u userproc
                     このユーザ ID のための同時に実行するプロセスの最大の数。

             -v virtualmem
                     キロバイト単位のプロセスの最大の仮想 (メモリ) サイズ。

             -w swapuse
                     このユーザ ID のために予約されるか、または使用されるス
                     ワップ空間のキロバイト単位の最大の量。

     umask [-S] [mask]
             ファイル作成マスク (umask(2) を参照) を、mask によって指定される
             8 進数またはシンボリック (chmod(1) を参照) 値に設定します。引数が
             省略されるなら、現在のマスク値が印刷 (表示) されます。-S オプショ
             ンが指定されるなら、出力はシンボリックで、そうでなければ、出力
             は、8 進数です。

     unalias [-a] [name ...]
             指定されたエイリアス名が、削除されます。-a が指定されるなら、すべ
             てのエイリアスが削除されます。

     unset [-fv] name ...
             指定された変数または関数は、未設定 (unset) で未エクスポート
             (unexported) にします。-v オプションが指定されるか、または、オプ
             ションが与えられないなら、name 引数は、変数名として扱われます。-f
             オプションが指定されるなら、name 引数は、関数名として扱われます。

     wait [job ...]
             指定された各 job が終了するのを待ち、指定された最後の job の最後
             のプロセスの終了ステータスを返します。指定されたあらゆる job が
             シェルに知られていないなら、それは、あたかも終了ステータス 127 で
             終了した既知のジョブように、扱われます。オペランドが与えられない
             なら、すべてのジョブが終了するのを待ち、0 の終了ステータスを返し
             ます。

   コマンド行編集
     sh が端末から対話形式で使用されているとき、現在のコマンドとコマンド履歴
     (「組み込みコマンド」の fc を参照) を、vi モードのコマンド行編集を使用し
     て編集することができます。このモードは、vi(1) マニュアルページに説明され
     ているもののサブセットに似たコマンドを使用します。コマンド ``set -o vi''
     (または ``set -V'') は、vi モードを有効にし、shvi の挿入モードにしま
     す。vi モードが有効にされている状態で、<ESC> をタイプすることによって挿入
     モードとコマンドモードに sh を切り替えることができます。コマンドモードの
     間に <return> を打つことは、行をシェルに渡します。

     同様に、emacs スタイルのコマンド行編集機能のサブセットを有効にするため
     に、``set -o emacs'' (または ``set -E'') コマンドを、使用することができま
     す。

環境変数
     次の環境変数は、sh の実行に影響を与えます:

     ENV         対話的なシェルのための初期設定ファイル。

     LANG, LC_*  ロケール設定。これらは、シェルの子供によって継承され、シェル
                 自体によって制限された方法で使用されます。

     OLDPWD      前のカレントディレクトリ。これは、cd によって使用され、更新さ
                 れます。

     PWD         場合によりとシンボリックリンクを含むカレントディレクトリのた
                 めの絶対パス名。これは、シェルによって使用され更新されます。

     TERM        シェルのためのデフォルトの端末設定。これは、シェルの子供に
                 よって受け継がれて、ヒストリ編集モードで使用されます。

     さらに、環境変数は、「特殊変数」で説明されるように、起動時にシェルに影響
     するシェル変数に変えられます。

関連ファイル
     ~/.profile           ユーザのログインプロファイル。
     /etc/profile         システムログインプロファイル。
     /etc/shells          シェルデータベース。
     /etc/suid_profile    特権があるシェルプロファイル。

終了ステータス
     構文エラーのようなシェルによって検出されるエラーによって、シェルは、0 以
     外の終了ステータスで終了します。シェルが対話式のシェルでないなら、シェル
     ファイルの実行は、中断されます。そうでなければ、シェルは、最後に実行され
     たコマンドの終了ステータスを返すか、または exit 組み込みコマンドに数値引
     数が使用されるなら、その引数を返します。

関連項目
     builtin(1), chsh(1), echo(1), ed(1), emacs(1), kill(1), printf(1),
     pwd(1), test(1), vi(1), execve(2), getrlimit(2), umask(2), wctype(3),
     editrc(5), shells(5)

歴史
     sh コマンド、Thompson シェルは、Version 1 AT&T UNIX で登場しました。それ
     は、名前 sh を継承した、Bourne シェルによって Version 7 AT&T UNIX で入れ
     替えられました。

     このバージョンの sh は、AT&T System V Release 4 UNIX の Bourne シェルの後
     に BSD ライセンスの下で 1989 年に書き直されました。

作者
     このバージョンの sh は、最初に Kenneth Almquist によって書かれました。

バグ
     sh ユーティリティは、UTF-8 以外のマルチバイト文字を認識しません。IFS を使
     用して分割することは、マルチバイト文字を認識しません。

FreeBSD 11.2                     May 30, 2016                     FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索