OSDN Git Service

GNU_bash: Generate draft and release pages from ja.po.
[linuxjm/jm.git] / manual / GNU_bash / release / man1 / bash.1
1 .if  \n(zZ=1 .ig zZ
2 .\"
3 .\" MAN PAGE COMMENTS to
4 .\"
5 .\"     Chet Ramey
6 .\"     Case Western Reserve University
7 .\"     chet@po.cwru.edu
8 .\"
9 .\"     Last Change: Tue Dec 28 13:41:43 EST 2010
10 .\"
11 .\" bash_builtins, strip all but Built-Ins section
12 .if  \n(zY=1 .ig zY
13 .\"*******************************************************************
14 .\"
15 .\" This file was generated with po4a. Translate the source file.
16 .\"
17 .\"*******************************************************************
18 .\"
19 .\" Translated Wed Apr  7 22:55:11 JST 1999
20 .\"    by FUJIWARA Teruyoshi <fujiwara@linux.or.jp>
21 .\" Proofed by
22 .\"       Shinya Hanataka <hanataka@abyss.rim.or.jp>
23 .\"       NAKANO Takeo <nakano@apm.seikei.ac.jp>
24 .\"
25 .\" Updated to 2.04  Sun Apr 1 2001
26 .\"    by the members of JM Project (JM@linux.or.jp)
27 .\"       Satoshi Asakawa <asakawa@kanagawa.hitachi.co.jp>
28 .\"       Shinya Hanataka <hanataka@abyss.rim.or.jp>
29 .\"       Akihiro Motoki <mokkun@iname.com>
30 .\"       NAKANO Takeo <nakano@apm.seikei.ac.jp>
31 .\"       Yuichi SATO <sato@complex.eng.hokudai.ac.jp>
32 .\"       Kentaro Shirakata <argrath@ub32.org>
33 .\"       TAKEI Nobumitsu <takei@webmasters.gr.jp>
34 .\"       UCHIDA Norihiro <KY4N-UCD@asahi-net.or.jp>
35 .\"
36 .\" Updated to 2.05  Sat 14 Apr 2001
37 .\"    by NAKANO Takeo
38 .\"
39 .\" Updated to 4.2  Thu 8 Sep 2011
40 .\"    by Masakazu Takahashi <emasaka@gmail.com>
41 .\"
42 .TH BASH 1 "2010 December 28" "GNU Bash\-4.2" 
43 .de  }1
44 .ds ]X \&\\*(]B\\
45 .nr )E 0
46 .if !"\\$1"" .nr )I \\$1n
47 .}f
48 .ll \\n(LLu
49 .in \\n()Ru+\\n(INu+\\n()Iu
50 .ti \\n(INu
51 .ie !\\n()Iu+\\n()Ru-\w\a\\*(]X\au-3p \{\\*(]X
52 .br\}
53 .el \\*(]X\h\a|\\n()Iu+\\n()Ru\a\c
54 .}f
55 ..
56 .\"
57 .\" There's some problem with having a `@'
58 .\" in a tagged paragraph with the BSD man macros.
59 .\" It has to do with `@' appearing in the }1 macro.
60 .\" This is a problem on 4.3 BSD and Ultrix, but Sun
61 .\" appears to have fixed it.
62 .\" If you're seeing the characters
63 .\" `@u-3p' appearing before the lines reading
64 .\" `possible-hostname-completions
65 .\" and `complete-hostname' down in READLINE,
66 .\" then uncomment this redefinition.
67 .\"
68 .de  FN
69 \fI\|\\$1\|\fP
70 ..
71 .\"
72 .\" File Name macro.  This used to be `.PN', for Path Name,
73 .\" but Sun doesn't seem to like that very much.
74 .\"
75 .SH 名前
76 bash \- GNU Bourne\-Again SHell
77 .SH 書式
78 \fBbash\fP [options] [file]
79 .SH 著作権
80 .if  n Bash is Copyright (C) 1989-2011 by the Free Software Foundation, Inc.
81 .if  t Bash is Copyright \(co 1989-2011 by the Free Software Foundation, Inc.
82 .SH 説明
83 \fBbash\fP は、標準入力やファイルから読み込んだコマンドを実行する、 \fBsh\fP 互換のコマンド言語インタプリタです。 \fBbash\fP
84 には、\fIKorn\fP シェルや \fIC\fP シェル (\fBksh\fP や \fBcsh\fP)  の便利な機能も採り入れられています。
85 .PP
86 \fBbash\fP は IEEE POSIX specification (IEEE Standard 1003.1)  の Shell and
87 Utilities に準拠する実装を目指しています。 \fBbash\fP はデフォルトで POSIX 準拠に設定することもできます。
88 .SH オプション
89 組み込みコマンド \fBset\fP の説明で述べられている 1 文字のシェルオプションを、 起動時に指定できます。 それに加えて、\fBbash\fP
90 は以下のオプションを起動時に解釈します。
91 .PP
92 .PD 0
93 .TP  10
94 \fB\-c\fP\fI\| string\^\fP
95 \fB\-c\fP オプションが指定されると、コマンドが \fIstring\fP から読み込まれます。 \fIstring\fP の後に引き数があれば、これらは
96 位置パラメータ (positional parameter: \fB$0\fP から始まるパラメータ) に代入されます。
97 .TP 
98 \fB\-i\fP
99 オプションが指定されると、 \fBbash\fP は \fI対話的\fP(interactive)  に動作します。
100 .TP 
101 \fB\-l\fP
102 ログインシェル (後述の
103 .SM
104 \fB起動\fP セクションを参照)  として起動されたかのように \fBbash\fP を動作させます。
105 .TP 
106 \fB\-r\fP
107 \fB\-r\fP オプションが指定されると、 \fBbash\fP は \fI制限された状態 (restricted)\fP となります (後述の
108 .SM
109 \fB制限付きのシェル\fP を参照)。
110 .TP 
111 \fB\-s\fP
112 \fB\-s\fP オプションが指定された場合と、 オプションを全て処理した後に引き数が残っていなかった場合には、 コマンドは標準入力から読み込まれます。
113 このオプションを使うと、 対話的シェルを起動するときに 位置パラメータを設定できます。
114 .TP 
115 \fB\-D\fP
116 二重引用符によるクォート文字列 (double\-quoted strings) に \fB$\fP が前置されたものを、全てリストして標準出力に出力します。
117 これらは、カレントロケールが \fBC\fP または \fBPOSIX\fP 以外のときに、 翻訳の対象となるべき文字列です。 このオプションを指定すると、
118 自動的に \fB\-n\fP オプションも指定されたことになります。 つまりコマンドは全く実行されません。
119 .TP 
120 \fB[\-+]O [\fP\fIshopt_option\fP\fB]\fP
121 \fIshopt_option\fP には、組み込みコマンド \fBshopt\fP (後述の
122 .SM
123 \fBシェルの組み込みコマンド\fP を参照)
124 に与えるのと同じシェルのオプションを指定します。 \fIshopt_option\fP が有効なオプションであれば、 \fB\-O\fP でオプションが設定されます。
125 \fB+O\fP で設定解除になります。 \fIshopt_option\fP を指定しない場合、 \fBshopt\fP
126 で指定できるオプションの名前と値が標準出力に表示されます。 このとき、\fB+O\fP では、入力として再利用できる形で出力されます。
127 .TP 
128 \fB\-\-\fP
129 \fB\-\-\fP はオプションの終わりを示し、それ以降のオプション処理を行いません。 \fB\-\-\fP 以降の引き数は全て、ファイル名や引き数として扱われます。
130 引き数 \fB\-\fP は \fB\-\-\fP と同じです。
131 .PD
132 .PP
133 \fBbash\fP が解釈するオプションには複数の文字からなるものもたくさんあります。 このようなオプションを認識させるためには、 コマンドライン中で 1
134 文字のオプションよりも前に置かなければなりません。
135 .PP
136 .PD 0
137 .TP 
138 \fB\-\-debugger\fP
139 シェルの実行を開始する前に、デバッグモードを準備します。 拡張デバッグモードを有効にします (後述の組み込みコマンド \fBshopt\fP の
140 \fBextdebug\fP オプションを参照)。
141 .TP 
142 \fB\-\-dump\-po\-strings\fP
143 \fB\-D\fP と同じですが、 出力は GNU \fIgettext\fP の \fBpo\fP (ポータブルオブジェクト) ファイル形式で行われます。
144 .TP 
145 \fB\-\-dump\-strings\fP
146 \fB\-D\fP と同じです。
147 .TP 
148 \fB\-\-help\fP
149 使用方法についてのメッセージを標準出力に表示し、正常終了します。
150 .TP 
151 \fB\-\-init\-file\fP \fIfile\fP
152 .PD 0
153 .TP 
154 \fB\-\-rcfile\fP \fIfile\fP
155 .PD
156 対話的シェルとして起動された場合、 個人用の標準の初期化ファイル \fI~/.bashrc\fP の代わりに \fIfile\fP からコマンドを実行します
157 (後述の
158 .SM
159 \fB起動\fP セクションを参照)。
160 .TP 
161 \fB\-\-login\fP
162 \fB\-l\fP と同じです。
163 .TP 
164 \fB\-\-noediting\fP
165 シェルが対話的動作の場合、コマンドラインを読み込むときに GNU \fBreadline\fP ライブラリを使用しません。
166 .TP 
167 \fB\-\-noprofile\fP
168 システム全体用の起動ファイル
169 .FN /etc/profile
170 および個人用の初期化ファイル \fI~/.bash_profile\fP,
171 \fI~/.bash_login\fP, \fI~/.profile\fP のいずれも読み込みません。デフォルトでは、 \fBbash\fP
172 はログインシェルとして起動されたときに これらのファイルを読み込みます (後述の
173 .SM
174 \fB起動\fP セクションを参照)。
175 .TP 
176 \fB\-\-norc\fP
177 シェルが対話的動作を行う場合に、個人用初期化ファイル \fI~/.bashrc\fP の読み込み・実行を行いません。シェルが \fBsh\fP
178 として起動された場合には、このオプションはデフォルトで有効になります。
179 .TP 
180 \fB\-\-posix\fP
181 \fBbash\fP の動作のうち、デフォルトの振舞いが POSIX 標準と異なる部分を、POSIX 標準に準拠するように変更します (\fIposix
182 モード\fP)。
183 .TP 
184 \fB\-\-restricted\fP
185 シェルを制限された状態にします (後述の
186 .SM
187 \fB制限付きのシェル\fP セクションを参照)。
188 .TP 
189 \fB\-\-verbose\fP
190 \fB\-v\fP と同じです。
191 .TP 
192 \fB\-\-version\fP
193 実行された \fBbash\fP のバージョン情報を標準出力に表示し、正常終了します。
194 .PD
195 .SH 引き数
196 オプション処理の後に引き数が残っており、かつ \fB\-c\fP オプションと \fB\-s\fP オプションのいずれも指定されていない場合、
197 最初の引き数はファイル名とみなされ、 そのファイルにシェルコマンドが記述されているとみなされます。 このような形で \fBbash\fP が起動された場合、
198 \fB$0\fP にそのファイルの名前が設定されます (残りの引き数は位置パラメータに設定されます)。 \fBbash\fP
199 はこのファイルからコマンドの読み込みと実行を行い、そして終了します。 \fBbash\fP の終了ステータスは、
200 このスクリプト中で実行された最後のコマンドの終了ステータスになります。 コマンドが全く実行されなければ、終了ステータスは 0 です。
201 ファイルは最初にカレントディレクトリから探し、見つけられなかった場合には、
202 .SM
203 \fBPATH\fP の中のディレクトリからスクリプトを探します。
204 .SH 起動
205 \fIログインシェル(login shell)\fPとは、0 番目の引き数の最初の文字が \fB\-\fP であるシェル、または \fB\-\-login\fP
206 オプション付きで起動されたシェルのことです。
207 .PP
208 \fI対話的な\fPシェルとは、 オプションでない引き数がなく、 標準入力と標準エラー出力がいずれも端末に接続されていて (これは \fIisatty\fP(3)
209 で調べられます)、 \fB\-c\fP オプションが指定されていない状態で起動されたシェル、または \fB\-i\fP オプション付きで起動されたシェルのことです。
210 \fBbash\fP が対話的に動作している場合には、
211 .SM
212 \fBPS1\fP が設定され、 \fB$\-\fP に \fBi\fP が含まれます。
213 これを利用すると、対話的動作の状態であるかどうかを、 シェルスクリプトや起動ファイルの内部で調べられます。
214 .PP
215 以下の段落では、 \fBbash\fP がどのように起動ファイルを実行するかを説明します。 以下のファイルのいずれかが、
216 「存在しているが読み込みできない」場合は、 \fBbash\fP はエラーを報告します。ファイル名に含まれるチルダは、 後述の
217 .SM
218 \fB展開\fP
219 セクションにおける \fBチルダ展開\fP の項目で述べるように展開されます。
220 .PP
221 \fBbash\fP が対話的なログインシェルとして起動されるか、 \fB\-\-login\fP オプション付きの非対話的シェルとして起動されると、
222 \fI/etc/profile\fP ファイルが存在すれば、 \fBbash\fP はまずここからコマンドを読み込んで実行します。 このファイルを読んだ後、
223 \fBbash\fP は \fI~/.bash_profile\fP, \fI~/.bash_login\fP, \fI~/.profile\fP をこの 順番で探します。
224 \fBbash\fP は、この中で最初に見つかり、かつ読み込みが可能であるファイルから コマンドを読み込んで実行します。 \fB\-\-noprofile\fP
225 オプションを使ってシェルを起動すれば、 この動作を行わないようにできます。
226 .PP
227 ログインシェルが終了するときには、 \fI~/.bash_logout\fP ファイルがあれば、 \fBbash\fP はこれを読み込んで実行します。
228 .PP
229 ログインシェルでない対話的シェルとして起動されると、 \fI~/.bashrc\fP ファイルがあれば、 \fBbash\fP
230 はここからコマンドを読み込み、実行します。 この動作は \fB\-\-norc\fP オプションで行わないようにできます。 \fB\-\-rcfile\fP \fIfile\fP
231 オプションを使うと、 コマンドの読み込みと実行を \fI~/.bashrc\fP からでなく \fIfile\fP から行わせることができます。
232 .PP
233 (例えばシェルスクリプトを実行するために) 非対話的に起動されると、 \fBbash\fP は環境変数
234 .SM
235 \fBBASH_ENV\fP
236 を調べ、この変数が定義されていればその値を展開し、 得られた値をファイル名とみなして、 そこからコマンドの読み込みと実行を行います。 つまり
237 \fBbash\fP は以下のコマンドが実行されたのと同じように動作します:
238 .sp .5
239 .RS
240 .if  t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP
241 .if  n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
242 .RE
243 .sp .5
244 ただし、ファイル名を探すために
245 .SM
246 \fBPATH\fP 環境変数の値が使われることはありません。
247 .PP
248 \fBsh\fP という名前で \fBbash\fP を起動すると、 \fBbash\fP は古くからある \fBsh\fP の起動動作をできるだけ真似しようとします。 また
249 POSIX 標準にもできるだけ従おうとします。 対話的なログインシェルとして起動されると、 あるいは \fB\-\-login\fP
250 オプション付きの非対話的シェルとして起動されると、 このシェルはまず \fI/etc/profile\fP と \fI~/.profile\fP
251 の順でコマンドの読み込みと実行をしようとします。 \fB\-\-noprofile\fP オプションを使うと、この動作を行わないようにできます。 \fBsh\fP
252 という名前の対話的シェルとして起動されると、 \fBbash\fP は環境変数
253 .SM
254 \fBENV\fP を調べ、この変数が定義されていればその値を展開し、
255 展開で得た値をコマンドの読み込みと実行を行うためのファイル名として使います。 \fBsh\fP という名前で起動されたシェルは、
256 ほかの起動ファイルからコマンドの読み込みと起動を行うことはないので、 \fB\-\-rcfile\fP オプションは全く効果を持ちません。 \fBsh\fP
257 という名前の非対話的シェルとして起動されると、 このシェルはほかの起動ファイルを何も読み込みません。 \fBsh\fP として起動された場合、 \fBbash\fP
258 は起動ファイルの読み込みを行った後に \fIPOSIX\fP モードに入ります。
259 .PP
260 \fB\-\-posix\fP コマンドラインオプション等により \fBbash\fP が \fIPOSIX\fP モードで起動されると、 \fBbash\fP
261 は起動ファイルに関して POSIX 標準に従います。 このモードでは、対話的シェルは
262 .SM
263 \fBENV\fP 環境変数を展開し、
264 展開して得られた名前のファイルからコマンドの読み込みと実行を行います。 ほかの起動ファイルは全く読み込みません。
265 .PP
266 \fBbash\fP は、リモートシェルデーモン \fIrshd\fP やセキュアシェルデーモン \fIsshd\fP
267 によって実行された場合など、標準入力がネットワーク接続に接続された 状態で実行されたかどうかを調べます。 この方法によって実行されていると
268 \fBbash\fP が判断した場合、 \fI~/.bashrc\fP が存在し、かつ読み込み可能であれば、 \fBbash\fP
269 はコマンドをこのファイルから読み込んで実行します。 \fBsh\fP として呼び出された場合には、この動作は行いません。 \fB\-\-norc\fP
270 オプションを使えばこの動作を禁止できますし、 \fB\-\-rcfile\fP オプションを使えばほかのファイルを読ませるようにもできます。 しかし一般的には
271 \fIrshd\fP は これらのオプションを付けてシェルを起動しませんし、 指定もできないようになっています。
272 .PP
273 シェルが実ユーザ (グループ) ID と異なる実効ユーザ (グループ) ID で起動され、 かつ \fB\-p\fP オプションが与えられていない場合は、
274 起動ファイルは全く読み込まれず、シェル関数は環境から継承されず、
275 .SM
276 \fBSHELLOPTS\fP,
277 .SM
278 \fBBASHOPTS\fP,
279 .SM
280 \fBCDPATH\fP,
281 .SM
282 \fBGLOBIGNORE\fP が環境変数に含まれていても無視され、 実効ユーザ ID には実ユーザ ID
283 が設定されます。 \fB\-p\fP オプションが起動時に与えられた場合、 起動時の動作は同じですが、 実効ユーザ ID は再設定されません。
284 .SH 定義
285 .PP
286 このドキュメントの残りの部分では、 以下の定義を使用します。
287 .PD 0
288 .TP 
289 \fBブランク (blank)\fP
290 空白文字またはタブ文字
291 .TP 
292 \fB単語 (word)\fP
293 シェルが 1 単位とみなす文字の並び。 \fBトークン (token)\fP とも言われます。
294 .TP 
295 \fB名前 (name)\fP
296 英数字とアンダースコア文字だけから構成され、 かつ最初の文字が英字かアンダースコア文字である \fI単語\fP。 \fB識別子 (identifier)\fP
297 とも言われます。
298 .TP 
299 \fBメタ文字 (metacharacter)\fP
300 クォートされていない場合に、単語区切りとなる文字。 以下の文字のうちのいずれかです:
301 .br
302 .RS
303 .PP
304 .if  t \fB|  &  ;  (  )  <  >  space  tab\fP
305 .if  n \fB|  & ; ( ) < > space tab\fP
306 .RE
307 .PP
308 .TP 
309 \fB制御演算子 (control operator)\fP
310 制御機能を持つ \fIトークン\fP。 以下のシンボルのうちのいずれかです:
311 .RS
312 .PP
313 .if  t \fB||  &  &&  ;  ;;  (  )  |  |&    <newline>\fP
314 .if  n \fB|| & && ; ;; ( ) | |& <newline>\fP
315 .RE
316 .PD
317 .SH 予約語
318 \fI予約語 (reserved word)\fP とはシェルにとって特別な意味を持つ単語です。 以下の単語がクォートされておらず、 かつ単純なコマンド
319 (simple command) の 先頭の単語 (後述の
320 .SM
321 \fBシェルの文法\fP を参照) であるか、 \fBcase\fP コマンドや
322 \fBfor\fP コマンドの 3 番目の単語である場合には、予約語として認識されます:
323 .if  t .RS
324 .PP
325 .B
326 .if  n ! case  do done elif else esac fi for function if in select then until while { } time [[ ]]
327 .if  t !    case    do    done    elif    else    esac    fi    for    function    if    in    select    then    until    while    {    }    time    [[    ]]
328 .if  t .RE
329 .SH シェルの文法
330 .SS "単純なコマンド (Simple Commands)"
331 .PP
332 単純なコマンド (\fIsimple command\fP) とは、 変数の代入を並べたもの (これは省略可能です) の後に、
333 ブランク区切りの単語とリダイレクションを記述し、 最後に制御演算子を置いたものです。 最初の単語は実行するコマンドを指定します。 これは 0
334 番目の引き数となります。 残りの単語は起動されるコマンドに引き数として渡されます。
335 .PP
336 単純なコマンドの返り値はコマンドの終了コードですが、シグナル \fIn\fP を受けてコマンドが終了した場合には 128+\fIn\^\fP となります。
337 .SS "パイプライン (Pipeline)"
338 .PP
339 \fIパイプライン (pipeline)\fPは、制御演算子 \fB|\fP または \fB|&\fP で区切った 1 つ以上のコマンドの並びです。
340 パイプラインのフォーマットを以下に示します:
341 .RS
342 .PP
343 [\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP ... ]
344 .RE
345 .PP
346 \fIcommand\fP の標準出力は \fIcommand2\fP の標準入力にパイプで接続されます。 この接続は、
347 コマンドで指定したどのリダイレクションよりも先に実行されます (後述の
348 .SM
349 \fBリダイレクト\fP を参照)。 \fB|&\fP
350 を使うと、\fIcommand\fP の標準エラー出力もパイプを通して \fIcommand2\fP の標準入力に接続されます。 これは \fB2>&1 |\fP
351 の短縮形です。 この標準エラー出力の暗黙のリダイレクションは、 コマンドに指定された全てのリダイレクションの後に実行されます。
352 .PP
353 \fBpipefail\fP オプションが有効になっている場合を除き、 パイプラインの返却ステータスは最後のコマンドの終了ステータスになります。
354 \fBpipefail\fP が有効になっている場合には、 0 以外のステータスを返した最後の (一番右の) コマンドの値が
355 パイプラインの返却ステータスになり、 全てのコマンドが正常終了した場合にのみ 0 になります。 パイプラインの前に、予約語である \fB!\fP がある場合、
356 そのパイプラインの終了ステータスは上記の終了ステータスを 論理否定したものになります。
357 値を返す前に、シェルはパイプライン中の全てのコマンドが終了するのを待ちます。
358 .PP
359 パイプラインの前に予約語 \fBtime\fP がある場合、コマンドの実行にかかった 経過時間・ユーザ時間・システム時間がパイプラインの終了時に報告されます。
360 \fB\-p\fP オプションを指定すると、 出力フォーマットが POSIX 仕様に変わります。 シェルが \fIposix モード\fP のときには、 後に続くのが
361 `\-' で始まるトークンであれば \fBtime\fP を予約語と認識しません。 変数
362 .SM
363 \fBTIMEFORMAT\fP
364 には、経過時間情報の表示の仕方を指定するフォーマット文字列を 設定できます (後述の \fBシェル変数\fP の項の
365 .SM
366 \fBTIMEFORMAT\fP
367 に関する説明を参照)。
368 .PP
369 シェルが \fIposix モード\fP のときには、\fBtime\fP の直後が 改行でもかまいません。 この場合、シェルと子プロセスがそれまでに消費した
370 ユーザ時間とシステム時間を出力します。 このときにも、経過時間情報のフォーマットを変数
371 .SM
372 \fBTIMEFORMAT\fP で指定できます。
373 .PP
374 パイプライン中の各コマンドは、それぞれ別のプロセスとして (つまりサブシェル内で) 実行されます。
375 .SS リスト
376 .PP
377 \fIリスト (list)\fP とは、1つ以上のパイプラインを演算子 \fB;\fP, \fB&\fP, \fB&&\fP, \fB||\fP
378 のいずれかで区切って並べたものです。パイプラインの最後に \fB;\fP, \fB&\fP, \fB<newline>\fP
379 のいずれかを置くこともできます。
380 .PP
381 リスト演算子のうち、 \fB&&\fP と \fB||\fP の優先順位は同じです。これらの次に、 \fB;\fP と \fB&\fP が同じ優先順位で続きます。
382 .PP
383 \fIリスト\fP 中では、コマンドの区切りとして、 セミコロンの代わりに一つ以上の改行が使われることもあります。
384 .PP
385 コマンドが制御演算子 \fB&\fP で終わっている場合、シェルはコマンドをサブシェル内で \fIバックグラウンド (background)\fP で実行します。
386 シェルはコマンドが終了するのを待たずに、返却ステータス 0 を返します。 コマンドを \fB;\fP で区切った場合には、これらは順番に実行されます。
387 シェルはそれぞれのコマンドが終了するのを順番に待ちます。 返却ステータスは、最後に実行したコマンドの終了ステータスになります。
388 .PP
389 AND リストと OR リストは、それぞれ制御演算子 \fB&&\fP と \fB||\fP で区切られたパイプラインの並びです。 AND リストと OR
390 リストは左結合で実行されます。 AND リストは
391 .RS
392 .PP
393 \fIcommand1\fP \fB&&\fP \fIcommand2\fP
394 .RE
395 .PP
396 という形式であり、 \fIcommand1\fP が終了ステータス 0 を返した場合に限り \fIcommand2\fP が実行されます。
397 .PP
398 OR リストは
399 .RS
400 .PP
401 \fIcommand1\fP \fB||\fP \fIcommand2\fP
402 .PP
403 .RE
404 .PP
405 という形式であり、 \fIcommand1\fP が 0 以外の終了ステータスを返した場合に限り \fIcommand2\fP が実行されます。 AND リストと
406 OR リストの返却ステータスは、 リスト中で最後に実行されたコマンドの終了ステータスです。
407 .SS "複合コマンド (Compound Commands)"
408 .PP
409 \fI複合コマンド (compound command)\fP を以下に示します:
410 .TP 
411 (\fIlist\fP)
412 \fIlist\fP はサブシェル内で実行されます (後述の
413 .SM
414 \fBコマンド実行環境\fP \fBの項を参照)。\fP
415 シェルの環境に影響を与えるような変数の代入や組み込みコマンドは、 コマンドの終了後に影響を残しません。 返却ステータスは \fIlist\fP
416 の終了ステータスです。
417 .TP 
418 { \fIlist\fP; }
419 \fIlist\fP が単に現在のシェル環境で実行されます。 \fIlist\fP の最後は改行文字かセミコロンでなければなりません。これは
420 \fIグループコマンド(group command)\fP と呼ばれます。返却ステータスは \fIlist\fP の終了ステータスです。 メタ文字である \fB(\fP
421 や \fB)\fP と違い、 \fB{\fP と \fB}\fP は \fI予約語\fP であり、予約語として認識される場所に現われる必要があることに注意してください。
422 これらは単語分割の対象とならないため、 \fIリスト\fP との間が空白またはシェルのメタ文字で分かれている必要があります。
423 .TP 
424 ((\fIexpression\fP))
425 \fIexpression\fP が後述の
426 .SM
427 \fB算術式評価\fP で説明される規則に従って評価されます。 式の値が 0 でない場合、返却ステータスは
428 0 になります。そうでない場合、 返されるステータスは 1 になります。これは \fBlet "\fP\fIexpression\fP\fB"\fP と全く同じものです。
429 .TP 
430 \fB[[\fP \fIexpression\fP \fB]]\fP
431 条件式 \fIexpression\fP の評価値に従って 0 または 1 を返します。 式は後述の
432 .SM
433 \fB条件式\fP
434 で説明する、プライマリによって構成されます。 単語分割とパス名展開は \fB[[\fP と \fB]]\fP の間の単語に対しては行われません。
435 チルダ展開、パラメータと変数の展開、算術式展開、コマンド置換、 プロセス置換、クォート除去は実行されます。 \fB\-f\fP
436 などの条件演算子がプライマリとして認識されるためには、 クォートされていてはいけません。
437 .if  t .sp 0.5
438 .if  n .sp 1
439 \fB[[\fP においては、\fB<\fP 演算子と \fB>\fP 演算子は、 現在のロケールにおける辞書順で比較します。
440 .if  t .sp 0.5
441 .if  n .sp 1
442 \fB==\fP 演算子と \fB!=\fP 演算子が使われたとき、 演算子の右の文字列はパターンと解釈され、
443 後述の\fBパターンマッチング\fPで説明する規則に従ってマッチングが行われます。 シェルオプション \fBnocasematch\fP が有効であれば、
444 アルファベットの大文字と小文字を考慮せずにマッチングが行われます。 返り値は、\fB==\fP 演算子では文字列がマッチしたときに、 \fB!=\fP
445 演算子では文字列がマッチしなかったときに 0 となり、 そうでない場合に 1 となります。 パターン中のどの部分でも、クォートすることで、
446 ただの文字列としてマッチングさせることができます。
447 .if  t .sp 0.5
448 .if  n .sp 1
449 そのほか、二項演算子 \fB=~\fP もあります。 優先順位は \fB==\fP や \fB!=\fP と同じです。
450 これを使うと、右辺の文字列は拡張正規表現とみなされ、 それに従って (\fIregex\fP(3) にあるように) マッチングが行われます。
451 文字列がパターンにマッチすれば返り値は 0 であり、 マッチしなければ返り値は 1 になります。 正規表現が文法的に誤っていれば、条件式の返り値は 2
452 になります。 シェルオプション \fBnocasematch\fP が有効であれば、 アルファベットの大文字と小文字を考慮せずにマッチングが行われます。
453 パターン中のどの部分でも、クォートすることで、 ただの文字列としてマッチングさせることができます。
454 正規表現中の括弧による部分式にマッチした部分文字列は、配列変数
455 .SM
456 \fBBASH_REMATCH\fP に保存されます。
457 .SM
458 \fBBASH_REMATCH\fP のインデックス 0 の要素は、文字列のうち正規表現全体にマッチした部分になります。
459 .SM
460 \fBBASH_REMATCH\fP のインデックス \fIn\fP の要素は、文字列のうち、 正規表現中の \fIn\fP
461 番目の括弧による部分式にマッチした部分になります。
462 .if  t .sp 0.5
463 .if  n .sp 1
464 式は以下の演算子を使って繋げられます。 以下に演算子を優先度の順に示します:
465 .if  t .sp 0.5
466 .if  n .sp 1
467 .RS
468 .PD 0
469 .TP 
470 \fB( \fP\fIexpression\fP\fB )\fP
471 \fIexpression\fP の値を返します。これを用いて、 演算子の通常の優先度を変更できます。
472 .TP 
473 \fB! \fP\fIexpression\fP
474 \fIexpression\fP が偽ならば真になります。
475 .TP 
476 \fIexpression1\fP \fB&&\fP \fIexpression2\fP
477 \fIexpression1\fP と \fIexpression2\fP が両方とも真であれば真になります。
478 .TP 
479 \fIexpression1\fP \fB||\fP \fIexpression2\fP
480 \fIexpression1\fP と \fIexpression2\fP のどちらかが真であれば真となります。
481 .PD
482 .LP
483 \fIexpression1\fP の値だけで条件式全体の返り値が決定できれば、 \fB&&\fP 演算子と \fB||\fP 演算子は \fIexpression2\fP
484 を実行しません。
485 .RE
486 .TP 
487 \fBfor\fP \fIname\fP [ [ \fBin\fP [ \fIword ...\fP ] ] ; ] \fBdo\fP \fIlist\fP ; \fBdone\fP
488 \fBin\fP に続く単語のリストが展開され、要素のリストが生成されます。 変数 \fIname\fP には、このリストの各要素が順番にセットされ、そのたびに
489 \fIlist\fP が実行されます。「\fBin\fP \fIword\fP」が省略された場合、 \fBfor\fP コマンドは、設定されている位置パラメータそれぞれに対して
490 \fIlist\fP を一度ずつ実行します(後述の
491 .SM
492 \fBパラメータ\fP を参照)。
493 返却ステータスは実行された最後のコマンドの終了ステータスになります。 \fBin\fP に続く要素を展開した結果が空となった場合、
494 コマンドは全く実行されず、返却ステータス 0 が返されます。
495 .TP 
496 \fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
497 最初に、算術式 \fIexpr1\fP が、後述の
498 .SM
499 \fB算術式評価\fP で説明される規則に従って評価されます。 次に、算術式 \fIexpr2\fP
500 がゼロになるまで繰り返し評価されます。 算術式 \fIexpr2\fP の評価結果がゼロでなければ、そのたびごとに\fIlist\fPが実行され、 算術式
501 \fIexpr3\fP が評価されます。 どの算術式も、省略された場合は、 評価結果が 1 であったものとして振舞います。 返却ステータスは \fIlist\fP
502 中で実行された 最後のコマンドの終了ステータスとなりますが、 算術式のいずれかが不正である場合には偽となります。
503 .TP 
504 \fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
505 \fBin\fP に続く単語のリストが展開され、要素のリストが生成されます。 展開された単語の集合が番号付きで標準エラー出力に出力されます。 「\fBin\fP
506 \fIword\fP」が省略された場合、 位置パラメータが出力されます (後述の
507 .SM
508 \fBパラメータ\fP を参照)。続いて \fBPS3\fP
509 プロンプトが表示され、標準入力から 1 行の読み込みが行われます。 表示された単語のいずれかに対応する数字がこの行に含まれていれば、 \fIname\fP
510 の値としてその単語が設定されます。 行が空であれば、単語とプロンプトが再び表示されます。 EOF を読み込むとコマンドが終了します。
511 これ以外の値の場合には、 \fIname\fP には空文字列が設定されます。読み込んだ行は変数 \fBREPLY\fP に格納されます。 \fBbreak\fP
512 コマンドが実行されるまで、選択を行うたびに \fIlist\fP が実行されます。 \fBselect\fP の終了ステータスは、 \fIlist\fP
513 中で最後に実行したコマンドの終了ステータスですが、 コマンドが全く実行されなかった場合には 0 となります。
514 .TP 
515 \fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] ... ) \fIlist\fP ;; ] ... \fBesac\fP
516 \fBcase\fP コマンドは最初に \fIword\fP を展開し、それぞれの \fIpattern\fP に対して順にマッチングを試みます。
517 マッチングの際にはパス名展開 (後述の \fBパス名展開\fP を参照) と同じ規則が用いられます。 \fIword\fP
518 には、チルダ展開、パラメータと変数の展開、算術式展開、 コマンド置換、プロセス置換、クォート除去が実行されます。 それぞれの \fIpattern\fP
519 は、チルダ展開、パラメータと変数の展開、 算術式展開、コマンド置換、プロセス置換、クォート除去のうえで比較されます。 シェルオプション
520 \fBnocasematch\fP が有効であれば、 アルファベットの大文字と小文字を考慮せずにマッチングが行われます。
521 マッチするものが見つかると、これに対応する \fIlist\fP が実行されます。 \fB;;\fP 演算子を使うと、
522 最初にマッチしたパターン以降のマッチングは試みられません。 \fB;;\fP の代わりに \fB;&\fP を使うと、 その次のパターンに対応する \fIlist\fP
523 の実行に続きます。 \fB;;\fP の代わりに \fB;;&\fP を使うと、 次のパターンがあればそのマッチングを試み、 マッチすれば対応する \fIlist\fP
524 を実行します。 マッチするパターンが無ければ、終了ステータスは 0 になります。 マッチするものがあったら、終了ステータスは \fIlist\fP
525 中で最後に実行されたコマンドの終了ステータスになります。
526 .TP 
527 \fBif\fP \fIlist\fP; \fBthen\fP \fIlist;\fP [ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... [ \fBelse\fP \fIlist\fP; ] \fBfi\fP
528 最初に \fBif\fP \fIlist\fP が実行されます。\fIlist\fP の終了ステータスが 0 ならば、\fBthen\fP \fIlist\fP が実行されます。
529 そうでなければ \fBelif\fP \fIlist\fP がそれぞれ順番に実行され、 \fIlist\fP の終了ステータスが 0 ならば、対応する \fBthen\fP
530 \fIlist\fP が実行され、コマンドが終了します。そうでなければ、\fBelse\fP \fIlist\fP が (もし存在すれば) 実行されます。
531 終了ステータスは最後に実行されたコマンドの終了ステータスですが、 真と評価された条件が全くない場合には 0 となります。
532 .TP 
533 \fBwhile\fP \fIlist\-1\fP; \fBdo\fP \fIlist\-2\fP; \fBdone\fP
534 .PD 0
535 .TP 
536 \fBuntil\fP \fIlist\-1\fP; \fBdo\fP \fIlist\-2\fP; \fBdone\fP
537 .PD
538 \fBwhile\fP コマンドは、\fIlist\-1\fP 中の最後のコマンドが終了ステータス 0 を返す間、繰り返して \fIlist\-2\fP
539 を実行します。\fBuntil\fP コマンドは \fBwhile\fP コマンドとほぼ同じですが、 評価の条件が逆となる点が異なります。 \fIlist\-2\fP は
540 \fIlist\-1\fP 中の最後のコマンドが 0 以外の終了ステータスを返す限りずっと実行されます。 \fBwhile\fP コマンドと \fBuntil\fP
541 コマンドの終了ステータスは、 \fBdo\fP \fIlist\-2\fP で実行された最後のコマンドの終了ステータスになりますが、
542 コマンドが全く実行されなかった場合には 0 になります。
543 .SS "コプロセス (Coprocesses)"
544 .PP
545 \fIコプロセス (coprocess)\fP とは、予約語 \fBcoproc\fP で始まるシェルのコマンドのことです。 コプロセスは、コマンドが制御演算子
546 \fB&\fP で終わっているときのように、 サブシェルで非同期に実行されます。 実行したシェルとコプロセスの間には、双方向のパイプが設けられます
547 .PP
548 コプロセスのフォーマットを以下に示します:
549 .RS
550 .PP
551 \fBcoproc\fP [\fINAME\fP] \fIcommand\fP [\fIredirections\fP]
552 .RE
553 .PP
554 これにより \fINAME\fP という名前のコプロセスが作られます。 \fINAME\fP が指定されない場合、デフォルトの名前は \fICOPROC\fP
555 となります。 \fIcommand\fP が \fI単純なコマンド\fP (前述) のときには、 \fINAME\fP は指定できません。
556 指定すると、単純なコマンドの最初の単語として扱われます。 コプロセスが実行されると、実行したシェルのコンテキストに \fINAME\fP という名前の配列変数
557 (後述の \fB配列\fP を参照) が作られます。 \fIcommand\fP の標準出力は、実行しているシェルのファイル・ディスクリプターの一つと
558 パイプによって接続されます。 このファイル・ディスクリプターは \fINAME\fP[0] に代入されます。 \fIcommand\fP
559 の標準入力は、実行しているシェルのファイル・ディスクリプターの一つと パイプによって接続されます。 このファイル・ディスクリプターは
560 \fINAME\fP[1] に代入されます。 このパイプは、コマンドで指定されたほかのリダイレクトより先に設けられます (後述の
561 .SM
562 \fBリダイレクト\fP を参照)。 ファイル・ディスクリプターは、標準的な単語展開により、 シェルのコマンドの引き数やリダイレクションに指定できます。
563 コプロセスの実行で生成されたシェルのプロセス ID は、変数 \fINAME\fP_PID の値になります。 コプロセスの終了を待つには、組み込みコマンド
564 \fBwait\fP を使います。
565 .PP
566 コプロセスの返却ステータスは、\fIcommand\fP の終了ステータスです。
567 .SS 関数定義
568 .PP
569 シェル関数とは、単純なコマンドとして呼び出されて、 新しい位置パラメーターの一式を持つ複合コマンドを実行するもののことです。
570 シェル関数は以下の形式で宣言します:
571 .TP 
572 \fIname\fP () \fIcompound\-command\fP [\fIredirection\fP]
573 .PD 0
574 .TP 
575 \fBfunction\fP \fIname\fP [()] \fIcompound\-command\fP [\fIredirection\fP]
576 .PD
577 これによって \fIname\fP という名前の関数が定義されます。 予約語 \fBfunction\fP は省略可能です。 予約語 \fBfunction\fP
578 が与えられた場合、括弧は省略可能です。 関数の \fI実体\fP は複合コマンド \fIcompound\-command\fP です (前述の \fB複合コマンド\fP
579 を参照)。 多くの場合、 { と } に挟まれたコマンドの \fIリスト\fP が用いられますが、 前述の \fB複合コマンド\fP
580 で挙げたどのコマンドを用いてもかまいません。 単純なコマンドの名前として \fIname\fP を指定するといつでも \fIcompound\-command\fP
581 が実行されます。 関数の定義で指定されたリダイレクション (後述の
582 .SM
583 \fBリダイレクト\fP を参照) は、関数が実行されるときに処理されます。
584 関数定義の終了ステータスは、文法エラーが起きた場合や、 読み込み専用の関数が同じ名前で定義されていた場合を除き、0 です。
585 関数を実行したときの終了ステータスは、実体の中で最後に実行されたコマンドの終了ステータスになります (後述の
586 .SM
587 \fB関数\fP を参照)。
588 .SH "コメント (COMMENTS)"
589 シェルが対話的でない場合、または対話的なシェルにおいて 組み込みコマンドの \fBshopt\fP に対する \fBinteractive_comments\fP
590 オプションが有効となっている (後述の
591 .SM
592 \fBシェルの組み込みコマンド\fP を参照すること) 場合には、 \fB#\fP
593 で始まる単語があると、その単語とその行の残りの文字が全て無視されます。 対話シェルでは、 \fBinteractive_comments\fP
594 オプションが有効でなければコメントは使えません。対話シェルでは、 \fBinteractive_comments\fP
595 オプションはデフォルトで有効になっています。
596 .SH クォート
597 \fIクォート (quoting)\fP を使うと、 特定の文字や単語が持つシェルに対する特別な意味をなくせます。
598 クォートを用いると、特殊文字の特殊な扱いを無効にしたり、 予約語が予約語として識別されることを防いだり、 パラメータの展開を防いだりできます。
599 .PP
600 前述の
601 .SM
602 \fB定義\fP で挙げた\fIメタ文字 (metacharacters)\fP にはそれぞれ特殊な意味があるので、
603 その文字自身を表すためにはクォートしなければなりません。
604 .PP
605 コマンドの履歴展開の機能 (後述の
606 .SM
607 \fB履歴の展開\fP を参照)  が使われているときには、\fI履歴展開\fP 文字 (通常は \fB!\fP) の
608 履歴展開を防ぐためにはクォートしなければなりません。
609 .PP
610 クォートの方法には、 \fIエスケープ文字(escape character)\fP, シングルクォート、ダブルクォートの 3 種類があります。
611 .PP
612 クォートされていないバックスラッシュ (\fB\e\fP) は \fIエスケープ文字\fP です。エスケープ文字は <newline>
613 という例外を除き、 後に続く文字 1 つの文字としての値を保持させます。 \fB\e\fP<newline> という組み合わせが現われ、
614 かつバックスラッシュ自身がクォートされていない場合には、 \fB\e\fP<newline> は行を継続することを表します
615 (つまり、入力ストリームから改行文字が削除され、実質的に無視されます)。
616 .PP
617 シングルクォートで文字を囲むと、 クォート内部のそれぞれの文字は文字としての値を保持します。
618 シングルクォートの間にシングルクォートを置くことはできません。 これはバックスラッシュを前に付けても同じです。
619 .PP
620 ダブルクォートで文字を囲むとクォート内部の全ての文字は文字としての値を 保持しますが、 \fB$\fP, \fB\`\fP, \fB\e\fP は例外となります。
621 履歴展開が有効なときには、 \fB!\fP がこれに加わります。 \fB$\fP と \fB\`\fP はダブルクォートの内部でも特殊な意味を失いません。
622 バックスラッシュの場合は、次の文字が \fB$\fP, \fB\`\fP, \^\fB"\fP\^, \fB\e\fP, \fB<newline>\fP
623 のいずれかである場合に限り特殊な意味を失いません。 前にバックスラッシュを付ければ、 ダブルクォート文字をダブルクォートによるクォートの内部で
624 クォートできます。 履歴展開は有効であれば実行されますが、ダブルクォート中の \fB!\fP がバックスラッシュでエスケープされている場合を除きます。
625 \fB!\fP の前のバックスラッシュは削除されません。
626 .PP
627 特殊なパラメータである \fB*\fP と \fB@\fP は、ダブルクォート内部でも特殊な意味を失いません (後述の
628 .SM
629 \fBパラメータ\fP を参照)。
630 .PP
631 \fB$\fP'\fIstring\fP' の形式を持つ単語は特殊な扱いを受けます。 この単語は \fIstring\fP に展開され、 それから ANSI C
632 標準で仕様が決められている、 バックスラッシュでエスケープされている文字に置き換えられます。 バックスラッシュエスケープシーケンスは、
633 (もし存在すれば) 以下のようにデコードされます:
634 .RS
635 .PD 0
636 .TP 
637 \fB\ea\fP
638 警告 (ベル)
639 .TP 
640 \fB\eb\fP
641 バックスペース
642 .TP 
643 \fB\ee\fP
644 .TP 
645 \fB\eE\fP
646 エスケープ文字
647 .TP    
648 \fB\ef\fP
649 フォームフィード
650 .TP   
651 \fB\en\fP
652 改行
653 .TP      
654 \fB\er\fP
655 復帰 (carriage return)
656 .TP 
657 \fB\et\fP
658 水平タブ
659 .TP    
660 \fB\ev\fP
661 垂直タブ
662 .TP 
663 \fB\e\e\fP
664 バックスラッシュ
665 .TP 
666 \fB\e\(aq\fP
667 シングルクォート
668 .TP 
669 \fB\e"\fP
670 ダブルクォート
671 .TP    
672 \fB\e\fP\fInnn\fP
673 8 進値が \fInnn\fP である 8 ビット文字 (1 文字につき数字 1〜3 桁)
674 .TP 
675 \fB\ex\fP\fIHH\fP
676 16 進値が \fIHH\fP である 8 ビット文字 (16 進で 1〜2 桁)。
677 .TP 
678 \fB\eu\fP\fIHHHH\fP
679 16 進値が \fIHHHH\fP であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜4 桁)。
680 .TP 
681 \fB\eU\fP\fIHHHHHHHH\fP
682 16 進値が \fIHHHHHHHH\fP であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜8 桁)。
683 .TP 
684 \fB\ec\fP\fIx\fP
685 control\-\fIx\fP の文字
686 .PD
687 .RE
688 .LP
689 展開された結果はシングルクォートされているのと同じ状態で、 ドル記号は存在しなかったかのように扱われます。
690 .PP
691 ダブルクォートされた文字列の前にドル記号があると (\fB$\fP"\fIstring\fP")、 文字列は現在のロケールに従って変換されます。 現在のロケールが
692 \fBC\fP または \fBPOSIX\fP ならば、 ドル記号は無視されます。文字列が変換されたり置換されたりした場合には、
693 その結果はダブルクォートされているのと同じ状態になります。
694 .SH パラメータ
695 \fIパラメータ (parameter)\fP は値を保持するためのものです。パラメータは \fI名前\fP、 数字、後述の \fB特殊なパラメータ\fP
696 で挙げる特殊文字のいずれかで表現されます。シェルでの用法においては、 \fI変数(variable)\fP とは \fI名前\fP で表現されたパラメータです。
697 変数は\fI値\fPと 0 個以上の\fI属性\fPを持ちます。 属性は \fBdeclare\fP 組み込みコマンド (後述の
698 .SM
699 \fBシェルの組み込みコマンド\fP の \fBdeclare\fP の項を参照) で設定されます。
700 .PP
701 パラメータに値が代入されていれば、 そのパラメータは設定 (set) されていると言われます。
702 空文字列も有効な値です。一度値を設定すると、組み込みコマンドの \fBunset\fP を使わなければ削除 (unset) できません (後述の
703 .SM
704 \fBシェルの組み込みコマンド\fP を参照)。
705 .PP
706 \fI変数\fP には、以下の構文で代入できます:
707 .RS
708 .PP
709 \fIname\fP=[\fIvalue\fP]
710 .RE
711 .PP
712 \fIvalue\fP が与えられなかった場合、変数には空文字列が代入されます。全ての \fIvalue\fP
713 に対して、チルダ展開、パラメータと変数の展開、コマンド置換、 算術式展開、クォート除去が行われます (後述の \fB展開\fP を参照)。変数の \fB整数\fP
714 属性が設定されている場合 (後述の \fBシェルの組み込みコマンド\fP を参照)、$((...)) の展開を使っていなくても \fIvalue\fP
715 に対しての算術展開が行われます (後述の \fB算術式展開\fP を参照)。 \fB特殊パラメータ\fP で後述する \fB"$@"\fP
716 という例外を除いて、単語の分割は行われません。 パス名展開も実行されません。 代入文は組み込みコマンドの \fBalias\fP, \fBdeclare\fP,
717 \fBtypeset\fP, \fBexport\fP, \fBreadonly\fP, \fBlocal\fP の引き数でも使われます。
718 .PP
719 代入文でシェル変数や配列のインデックスに値を代入する場面では、 += 演算子を使って変数の直前の値に追加したり加算したりできます。 +=
720 を\fI整数\fP属性が設定された変数に対して使うと、 \fI値\fPは算術式展開として評価され、 変数の現在の値に加算されます。 += を配列変数への複合代入
721 (後述の \fB配列\fP を参照) で使うと、 変数の現在の値は (= を使ったときとは違って) 削除されません。
722 インデックスによる配列の場合は、新しい値が最大のインデックス より一つ大きいインデックスから配列に追加されます。
723 連想配列の場合は、新しいキーと値の組が追加されます。 文字列の値の変数に対して使うと、\fI値\fPが展開されて、 変数の元の値の後に追加されます。
724 .SS "位置パラメータ(Positional Parameters)"
725 .PP
726 \fI位置パラメータ (positional parameter)\fP は、1 桁以上の数値で表されるパラメータです。ただし 0 は含みません。
727 位置パラメータは、シェルが起動されたときにシェルの引き数が代入されますが、 組み込みコマンドの \fBset\fP を使って代入し直すこともできます。
728 代入文を使って位置パラメータへの代入を行うことはできません。 シェル関数が実行されると、 位置パラメータは一時的に置き換えられます (後述の
729 .SM
730 \fB関数\fP を参照)。
731 .PP
732 2 桁以上の数値を含む位置パラメータを展開するときには、ブレース ({})  で囲まなければなりません (後述の
733 .SM
734 \fB展開\fP を参照)。
735 .SS 特殊パラメータ
736 .PP
737 シェルはいくつかのパラメータを特別扱いします。 このようなパラメータは参照されるだけであり、 値を代入することは許されません。
738 .PD 0
739 .TP 
740 \fB*\fP
741 (1 から始まる) 全ての位置パラメータに展開されます。 ダブルクォートの内部で展開が行われたときは、 それぞれのパラメータを特別な変数である
742 .SM
743 \fBIFS\fP の最初の文字で区切って並べた 1 つの単語に展開されます。つまり、 "\fB$*\fP" は
744 "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP" と同じです。 ここで \fIc\fP は変数
745 .SM
746 \fBIFS\fP の値の最初の文字です。
747 .SM
748 \fBIFS\fP が設定されていなければ、パラメータは空白で区切られます。
749 .SM
750 \fBIFS\fP
751 が空文字列の場合、パラメータの間には区切り文字は入らず、 全てのパラメータは繋げられます。
752 .TP 
753 \fB@\fP
754 (1 から始まる) 全ての位置パラメータに展開されます。 ダブルクォートの内部で展開が行われたときは、 それぞれのパラメータは別々の単語に展開されます。
755 つまり "\fB$@\fP" は "\fB$1\fP" "\fB$2\fP" ... と同じです。 単語の中でダブルクォートの展開が行われるときには、
756 最初のパラメータの展開結果に元の単語のダブルクォートより前の部分が 結び付き、最後のパラメータの展開結果に元の単語のダブルクォートより
757 後の部分が結び付きます。 位置パラメータがない場合には、"\fB$@\fP" や \fB$@\fP を展開しても無かったことになります (つまり取り除かれます)。
758 .TP 
759 \fB#\fP
760 位置パラメータの個数を示す 10 進値に展開されます。
761 .TP 
762 \fB?\fP
763 最後に実行されたフォアグラウンドのパイプラインの 終了ステータスに展開されます。
764 .TP 
765 \fB\-\fP
766 現在のオプションフラグに展開されます。 これは起動のときに指定したり、組み込みコマンド \fBset\fP で設定したり、( \fB\-i\fP オプション等で)
767 シェル自身が設定したりします。
768 .TP 
769 \fB$\fP
770 シェルのプロセス ID に展開されます。 () を使ったサブシェルの内部では、$ はサブシェルではなく、 現在のシェルのプロセス ID に展開されます。
771 .TP 
772 \fB!\fP
773 最後に実行されたバックグラウンド (非同期) コマンドの プロセス ID に展開されます。
774 .TP 
775 \fB0\fP
776 シェルまたはシェルスクリプトの名前に展開されます。 これはシェルの初期化時に設定されます。 コマンドを記述したファイルを指定して \fBbash\fP
777 を起動した場合、 \fB$0\fP にはそのファイルの名前が設定されます。 \fB\-c\fP オプションを付けて \fBbash\fP
778 を起動した場合、実行する文字列の後に引き数があれば、その最初の値が \fB$0\fP に設定されます。引き数がなければ、 \fBbash\fP
779 を起動するときに使用した名前が引き数 0 として与えられ \fB$0\fP に設定されます。
780 .TP 
781 \fB_\fP
782 シェルの起動時には、環境または引き数リストで渡された、 実行するシェルまたはシェルスクリプトの絶対パス名が設定されます。
783 その後では、直前のコマンドに対する最後の引き数 (展開後のもの) に展開されます。 また、実行する各コマンドの完全なパス名が設定され、
784 そのコマンドの環境にエクスポートされます。 メールをチェックするときには、 このパラメータは現在チェックしているメールファイル名を保持します。
785 .PD
786 .SS シェル変数
787 .PP
788 以下の変数はシェルが設定します:
789 .PP
790 .PD 0
791 .TP 
792 \fBBASH\fP
793 現在実行している \fBbash\fP を起動したときに使われた、完全なファイル名に展開されます。
794 .TP 
795 \fBBASHOPTS\fP
796 コロン区切りのリストで、有効になっているシェルのオプションを示します。 リスト中のそれぞれの単語は、組み込みコマンド \fBshopt\fP の \fB\-s\fP
797 オプション (後述の
798 .SM
799 \fBシェルの組み込みコマンド\fP を参照) に対する有効な引き数になっています。
800 .SM
801 \fBBASHOPTS\fP
802 に現われるオプションは、\fBshopt\fP コマンドで \fIon\fP と表示されるものです。 もし \fBbash\fP
803 を起動したときに、この変数が環境変数に設定されていれば、 起動ファイルを読み込む前に、リストにある全てのシェルオプションが 有効に設定されます。
804 この変数は読み込み専用です。
805 .TP 
806 \fBBASHPID\fP
807 現在の \fBbash\fP のプロセス ID に展開されます。 \fBbash\fP を再初期化しないサブシェルのような、いくつかの環境においては、 \fB$$\fP
808 と値が異なります。
809 .TP 
810 \fBBASH_ALIASES\fP
811 エイリアスの内部的なリストに対応する連想配列変数です。 エイリアスは通常、組み込みコマンド \fBalias\fP で操作します。
812 この配列に要素を追加すると、エイリアスのリストにも追加されます。 配列から要素を削除すると、エイリアスがリストから削除されます。
813 .TP 
814 \fBBASH_ARGC\fP
815 \fBbash\fP の現在の呼び出しスタックについて、フレームごとの引き数の数が並んだ配列変数です。現在のサブルーチン (シェル関数や、\fB.\fP か
816 \fBsource\fP で実行されたスクリプト) の引き数の数が、スタックの一番上に置かれます。サブルーチンが実行されると、渡されたパラメータの数が
817 .SM
818 \fBBASH_ARGC\fP に追加されます。シェルが
819 .SM
820 \fBBASH_ARGC\fP
821 を設定するのは、拡張デバッグモードのときだけです (後述の組み込みコマンド \fBshopt\fP の \fBextdebug\fP オプションを参照)。
822 .TP 
823 \fBBASH_ARGV\fP
824 \fBbash\fP
825 の現在の呼び出しスタックについて、全ての引き数が並んだ配列変数です。一連の呼び出しのうち、最後に呼ばれたサブルーチンの最後の引き数が、スタックの一番上に置かれます。最初に呼ばれたサブルーチンの最初の引き数が、スタックの一番下になります。サブルーチンが実行されると、渡されたパラメータが
826 .SM
827 \fBBASH_ARGV\fP に追加されます。シェルが
828 .SM
829 \fBBASH_ARGV\fP
830 を設定するのは、拡張デバッグモードのときだけです (後述の組み込みコマンド \fBshopt\fP の \fBextdebug\fP オプションを参照)。
831 .TP 
832 \fBBASH_CMDS\fP
833 \fBbash\fP が内部に持つ、コマンドのハッシュテーブルに対応する 連想配列変数です。 ハッシュテーブルは通常、組み込みコマンド hash
834 で操作します。 この配列に要素を追加すると、ハッシュテーブルにも追加されます。 配列から要素を削除すると、ハッシュテーブルから削除されます。
835 .TP 
836 \fBBASH_COMMAND\fP
837 現在実行しているか実行しようとしているコマンドです。 ただし、トラップによってシェルが実行しているコマンドは別で、
838 その場合は、トラップの発動時に実行していたコマンドになります。
839 .TP 
840 \fBBASH_EXECUTION_STRING\fP
841 起動オプション \fB\-c\fP で指定されたコマンドです。
842 .TP 
843 \fBBASH_LINENO\fP
844 ソースファイル中の行番号からなる配列変数で、 それぞれの要素は
845 .SM
846 \fBFUNCNAME\fP の各要素が呼び出された位置に対応します。
847 つまり、\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP はソースファイル (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP)
848 中で\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP が呼び出された行番号です。 別のシェル関数から参照されると
849 \fB${BASH_LINENO[\fP\fI$i\-1\fP\fB]}\fP になります。 現在の行番号は
850 .SM
851 \fBLINENO\fP で取得できます。
852 .TP 
853 \fBBASH_REMATCH\fP
854 条件コマンド \fB[[\fP 中の二項演算子 \fB=~\fP により設定される配列変数です。 インデックス 0
855 の要素は、正規表現全体にマッチする部分文字列です。 インデックス \fIn\fP の要素は、\fIn\fP 番目の括弧による部分式に マッチした部分文字列です。
856 この変数は読み込み専用です。
857 .TP 
858 \fBBASH_SOURCE\fP
859 ソースファイル名からなる配列変数で、それぞれの要素は配列変数
860 .SM
861 \fBFUNCNAME\fP
862 の要素のシェル関数がそれぞれ定義されたファイル名に対応します。 シェル関数 \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP はファイル
863 \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP で定義され、 \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP から呼ばれています。
864 .TP 
865 \fBBASH_SUBSHELL\fP
866 サブシェルやサブシェル環境が作成されるたびに 1 ずつ増えます。 初期値は 0 です。
867 .TP 
868 \fBBASH_VERSINFO\fP
869 読み込み専用の配列変数で、配列の各要素は現在実行されている \fBbash\fP のバージョン情報を持っています。
870 配列変数の要素に代入される内容を以下に示します:
871 .sp .5
872 .RS
873 .TP  24
874 \fBBASH_VERSINFO[\fP0\fB]\fP
875 メジャーバージョン番号 (\fIリリース\fP)。
876 .TP 
877 \fBBASH_VERSINFO[\fP1\fB]\fP
878 マイナーバージョン番号 (\fIバージョン\fP)。
879 .TP 
880 \fBBASH_VERSINFO[\fP2\fB]\fP
881 パッチレベル。
882 .TP 
883 \fBBASH_VERSINFO[\fP3\fB]\fP
884 ビルドバージョン。
885 .TP 
886 \fBBASH_VERSINFO[\fP4\fB]\fP
887 リリースステータス (\fIbeta1\fP など)。
888 .TP 
889 \fBBASH_VERSINFO[\fP5\fB]\fP
890 \fBMACHTYPE\fP の値。
891 .RE
892 .TP 
893 \fBBASH_VERSION\fP
894 現在実行している \fBbash\fP のバージョンを示す文字列に展開されます。
895 .TP 
896 \fBCOMP_CWORD\fP
897 現在カーソル位置がある単語の 配列変数 \fB${COMP_WORDS}\fP におけるインデックスです。 この変数はプログラム補完機能 (後述の
898 \fBプログラム補完\fP を参照)  から呼ばれたシェル関数においてのみ有効です。
899 .TP 
900 \fBCOMP_KEY\fP
901 現在の補完関数を呼び出したキー (またはキーシーケンスの最後のキー) です。
902 .TP 
903 \fBCOMP_LINE\fP
904 現在のコマンドラインです。 この変数はプログラム補完機能 (後述の \fBプログラム補完\fP を参照)
905 から呼ばれたシェル関数や外部コマンドにおいてのみ有効です。
906 .TP 
907 \fBCOMP_POINT\fP
908 現在のコマンドの先頭からの相対値として与えられた カーソル位置のインデックスです。 現在のカーソル位置が現在の現在のコマンドの最後にある場合、
909 この変数の値は \fB${#COMP_LINE}\fP と等しくなります。 この変数はプログラム補完機能 (後述の \fBプログラム補完\fP を参照)
910 から呼ばれたシェル関数や外部コマンドにおいてのみ有効です。
911 .TP 
912 \fBCOMP_TYPE\fP
913 補完関数を呼び出した補完のタイプに対応する整数値が設定されます。 \fITAB\fP は通常の補完です。 \fI?\fP
914 は連続したタブ入力による候補のリスト表示です。 \fI!\fP は途中まで補完した後の候補のリスト表示です。 \fI@\fP
915 は、部分的な補完ができないときの候補のリスト表示です。 \fI%\fP はメニュー補完 (menu completion)です。 この変数はプログラム補完機能
916 (後述の \fBプログラム補完\fP を参照)  から呼ばれたシェル関数と外部コマンドにおいてのみ有効です。
917 .TP 
918 \fBCOMP_WORDBREAKS\fP
919 単語補完のときに \fBreadline\fP ライブラリが単語分割の区切り文字として 扱う文字の並びです。
920 .SM
921 \fBCOMP_WORDBREAKS\fP を unset すると、この変数の特殊な性質はなくなります。後で再び set しても元には戻りません。
922 .TP 
923 \fBCOMP_WORDS\fP
924 現在のコマンドラインの各単語からなる配列変数 (後述の \fB配列\fP 参照) です。 コマンドラインは \fBreadline\fP と同じように前述した
925 .SM
926 \fBCOMP_WORDBREAKS\fP によって単語に分割されます。 この変数はプログラム補完機能 (後述の \fBプログラム補完\fP を参照)
927 から呼ばれたシェル関数においてのみ有効です。
928 .TP 
929 \fBCOPROC\fP
930 無名のコプロセス (前述の \fBコプロセス\fP を参照)  が入出力するファイル・ディスクリプターを保持する配列変数 (後述の \fB配列\fP 参照) です。
931 .TP 
932 \fBDIRSTACK\fP
933 現在のディレクトリスタックの内容を持つ配列変数 (後述の \fB配列\fP を参照) です。組み込みコマンド \fBdirs\fP
934 を使うと、スタック中のディレクトリがスタック順に表示されます。 配列変数の要素に代入を行うと、 既にスタックに入っているディレクトリを変更できますが、
935 ディレクトリの追加と削除を行うためには、組み込みコマンドの \fBpushd\fP と \fBpopd\fP を使わなければなりません。
936 この変数に代入を行っても現在の作業ディレクトリは変わりません。
937 .SM
938 \fBDIRSTACK\fP を \fBunset\fP
939 すると、この変数の特殊な性質はなくなります。後で再び \fBset\fP しても元には戻りません。
940 .TP 
941 \fBEUID\fP
942 現在のユーザの実効ユーザ ID に展開されます。 初期化はシェルの起動時に行われます。 この変数は読み込み専用です。
943 .TP 
944 \fBFUNCNAME\fP
945 現在の呼び出しスタックにある全てのシェル関数名が 入った配列変数です。 インデックス 0 の要素は、実行中のシェル関数の名前です。 最も下の要素
946 (最大のインデックスの要素) は
947 .if  t \f(CW"main"\fP.
948 .if  n "main".
949 です。 この変数は、シェル関数を実行している間のみ存在します。
950 .SM
951 \fBFUNCNAME\fP への代入は効果がなく、エラーステータスを返します。
952 .SM
953 \fBFUNCNAME\fP を \fBunset\fP すると、この変数の特殊な性質はなくなります。後で再び \fBset\fP しても元には戻りません。
954 .if  t .sp 0.5
955 .if  n .sp 1
956 この変数の各要素は、\fBBASH_LINENO\fP や \fBBASH_SOURCE\fP の各要素に 対応します。
957 これらを参照することで、呼び出しスタックの状態を確認できます。 例えば、\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP はファイル
958 \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP の行番号 \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP から呼び出されたものです。
959 組み込みコマンド \fBcaller\fP を実行すると、これらの情報から 現在の呼び出しスタックを表示します。
960 .TP 
961 \fBGROUPS\fP
962 現在のユーザがメンバになっているグループのリストを含んだ配列変数です。
963 .SM
964 \fBGROUPS\fP
965 への代入は効果がなく、エラーステータスを返します。
966 .SM
967 \fBGROUPS\fP が unset された場合はこの変数の特殊な性質はなくなります。
968 その後に再設定されたとしても元に戻りません。
969 .TP 
970 \fBHISTCMD\fP
971 現在のコマンドの履歴番号 (履歴リストにおけるインデックス) です。
972 .SM
973 \fBHISTCMD\fP を \fBunset\fP
974 すると、この変数の特殊な性質はなくなります。後で再び \fBset\fP しても元には戻りません。
975 .TP 
976 \fBHOSTNAME\fP
977 現在のホスト名が自動的に設定されます。
978 .TP 
979 \fBHOSTTYPE\fP
980 \fBbash\fP を実行するマシンの種類をユニークに記述する文字列が自動的に設定されます。 デフォルト値はシステム依存です。
981 .TP 
982 \fBLINENO\fP
983 この変数が参照されると、その場所ごとに、 スクリプトや関数における現在の行番号 (1 から始まります) を表す 10
984 進値に置き換わります。スクリプトや関数の内部でない場合には、 意味のある値が代入されることは保証されません。
985 .SM
986 \fBLINENO\fP を
987 \fBunset\fP すると、この変数の特殊な性質はなくなります。後で再び \fBset\fP しても元には戻りません。
988 .TP 
989 \fBMACHTYPE\fP
990 \fBbash\fP を実行するシステムの種類を完全に指定する文字列が、 GNU 標準の \fIcpu\-company\-system\fP の形式で設定されます。
991 デフォルト値はシステム依存です。
992 .TP 
993 \fBMAPFILE\fP
994 組み込みコマンド \fBmapfile\fP に変数名が指定されなかったときに 読み込んだテキストを保持する配列変数 (後述の \fB配列\fP を参照) です。
995 .TP 
996 \fBOLDPWD\fP
997 \fBcd\fP コマンドで設定された、1 つ前の作業ディレクトリ。
998 .TP 
999 \fBOPTARG\fP
1000 組み込みコマンド \fBgetopts\fP で処理した最後のオプション引き数の値です (後述の
1001 .SM
1002 \fBシェルの組み込みコマンド\fP を参照)。
1003 .TP 
1004 \fBOPTIND\fP
1005 組み込みコマンド \fBgetopts\fP で次に処理されるオプション引き数のインデックスです (後述の
1006 .SM
1007 \fBシェルの組み込みコマンド\fP
1008 を参照)。
1009 .TP 
1010 \fBOSTYPE\fP
1011 \fBbash\fP を実行するオペレーティングシステムを記述する文字列が自動的に設定されます。 デフォルト値はシステム依存です。
1012 .TP 
1013 \fBPIPESTATUS\fP
1014 フォアグラウンドで最後に実行したパイプラインの各プロセスの 終了ステータスのリストを含む配列変数です (後述の \fB配列\fP を参照)。 パイプラインには
1015 1 つのコマンドしかなくてもかまいません。
1016 .TP 
1017 \fBPPID\fP
1018 そのシェルの親のプロセス ID。この変数は読み込み専用です。
1019 .TP 
1020 \fBPWD\fP
1021 \fBcd\fP コマンドで設定された現在の作業ディレクトリ。
1022 .TP 
1023 \fBRANDOM\fP
1024 このパラメータが参照されるたびに、 0 から 32767 までのランダムな整数が生成されます。
1025 .SM
1026 \fBRANDOM\fP
1027 に値を代入すると、乱数の列を初期化できます。
1028 .SM
1029 \fBRANDOM\fP を \fBunset\fP
1030 すると、この変数の特殊な性質はなくなります。後で再び \fBset\fP しても元には戻りません。
1031 .TP 
1032 \fBREADLINE_LINE\fP
1033 \fBreadline\fP の編集バッファの内容です。
1034 .if  t \f(CWbind -x\fP
1035 .if  n "bind -x"
1036 (後述の
1037 .SM
1038 \fBシェルの組み込みコマンド\fP を参照) で使います。
1039 .TP 
1040 \fBREADLINE_POINT\fP
1041 \fBreadline\fP の編集バッファでの挿入ポイントの位置です。
1042 .if  t \f(CWbind -x\fP
1043 .if  n "bind -x"
1044 (後述の
1045 .SM
1046 \fBシェルの組み込みコマンド\fP を参照) で使います。
1047 .TP 
1048 \fBREPLY\fP
1049 組み込みコマンド \fBread\fP に引き数が与えられなかったときに読み込まれた行が設定されます。
1050 .TP 
1051 \fBSECONDS\fP
1052 このパラメータを参照すると、シェルが起動されてからの秒数が返されます。
1053 .SM
1054 \fBSECONDS\fP
1055 に値を代入した場合、それ以降の参照において返される値は、 代入された値と代入以降の秒数を足した値になります。
1056 .SM
1057 \fBSECONDS\fP を
1058 \fBunset\fP すると、この変数の特殊な性質はなくなります。後で再び \fBset\fP しても元には戻りません。
1059 .TP 
1060 \fBSHELLOPTS\fP
1061 コロン区切りのリストで、有効になっているシェルのオプションを示します。 リスト中のそれぞれの単語は、組み込みコマンド \fBset\fP の \fB\-o\fP
1062 オプション (後述の
1063 .SM
1064 \fBシェルの組み込みコマンド\fP を参照) に対する有効な引き数になっています。
1065 .SM
1066 \fBSHELLOPTS\fP に入っているオプションは、\fBset \-o\fP を実行した場合にも \fIon\fP であると報告されます。 この変数が
1067 \fBbash\fP の起動時に環境変数に入っていた場合、 どの初期化ファイルを読むよりも前にリスト中のシェルオプションが有効になります。
1068 この変数は読み込み専用です。
1069 .TP 
1070 \fBSHLVL\fP
1071 \fBbash\fP が起動するときに、環境変数で渡された値から 1 増やした値が 設定されます。
1072 .TP 
1073 \fBUID\fP
1074 現在のユーザのユーザ ID に展開されます。 初期化はシェルの起動時に行われます。 この変数は読み込み専用です。
1075 .PD
1076 .PP
1077 以下の変数はシェルが使用します。場合によっては、 \fBbash\fP がデフォルト値を変数に代入します。 そのような場合についてはそれぞれ注記します。
1078 .PP
1079 .PD 0
1080 .TP 
1081 \fBBASH_ENV\fP
1082 \fBbash\fP がシェルスクリプトを実行するときにこの値が設定されている場合、 この値は (\fI~/.bashrc\fP のように)
1083 シェルを初期化するコマンドが書かれているファイル名と解釈されます。
1084 .SM
1085 \fBBASH_ENV\fP
1086 の値をファイル名として処理する前には、パラメータ展開、コマンド置換、 算術的展開が行われます。 この結果のファイルを検索する際には
1087 .SM
1088 \fBPATH\fP は使用されません。
1089 .TP 
1090 \fBBASH_XTRACEFD\fP
1091 有効なファイル・ディスクリプターに対応する整数をセットすると、 \fBbash\fP は
1092 .if  t \f(CWset -x\fP
1093 .if  n \fIset -x\fP
1094 が設定されたときに、生成されたトレース出力を そのファイル・ディスクリプターに出力します。
1095 .SM
1096 \fBBASH_XTRACEFD\fP が
1097 unset されるか、新しい値が代入されると、 それまで設定されていたファイル・ディスクリプターはクローズされます。
1098 .SM
1099 \fBBASH_XTRACEFD\fP を unset するか空文字列を代入すると、 トレース出力は標準エラー出力に送られます。
1100 .SM
1101 \fBBASH_XTRACEFD\fP に 2 (標準エラー出力のファイル・ディスクリプター) を設定してしまうと、 unset
1102 したときに標準エラー出力がクローズされてしまうことに 注意してください。
1103 .TP 
1104 \fBCDPATH\fP
1105 \fBcd\fP コマンドの検索パスです。これは、 \fBcd\fP コマンドで指定した対象ディレクトリを探すディレクトリを コロンで区切って並べたリストです。
1106 例えば、
1107 .if  t \f(CW".:~:/usr"\fP といった値になります。
1108 .if  n ".:~:/usr" といった値になります。
1109 .TP 
1110 \fBCOLUMNS\fP
1111 組み込みコマンド \fBselect\fP によって、選択されたリストを表示する際の端末幅の決定に用いられます。 SIGWINCH
1112 を受信すると自動的に設定されます。
1113 .TP 
1114 \fBCOMPREPLY\fP
1115 \fBbash\fP が可能な補完候補を読み込む配列変数です。 この値はプログラム補完機能 (後述の \fBプログラム補完\fP を参照)
1116 によって呼び出されたシェル関数によって生成されます。
1117 .TP 
1118 \fBEMACS\fP
1119 \fBbash\fP が起動したときにこの環境変数が設定されて値が
1120 .if  t \f(CWt\fP,
1121 .if  n "t",
1122 になっていると、Emacs のシェルバッファで動作しているとみなし、 行編集を無効にします。
1123 .TP 
1124 \fBENV\fP
1125 .SM
1126 \fBBASH_ENV\fP と類似の変数で、POSIX モードで使われます。
1127 .TP 
1128 \fBFCEDIT\fP
1129 組み込みコマンド \fBfc\fP が使うデフォルトのエディタです。
1130 .TP 
1131 \fBFIGNORE\fP
1132 ファイル名補完 (後述の
1133 .SM
1134 \fBREADLINE\fP を参照) を行う際に無視するサフィックスを コロンで区切って並べたリストです。
1135 .SM
1136 \fBFIGNORE\fP のエントリのいずれかにサフィックスがマッチするファイル名は、
1137 ファイル名補完にマッチするファイルのリストから除外されます。 例えば値として
1138 .if  t \f(CW".o:~"\fP を設定します。
1139 .if  n ".o:~" を設定します。
1140 .TP 
1141 \fBFUNCNEST\fP
1142 0 より大きい数値を設定すると、関数呼び出しを何重まで許すかの 最大レベルを決めます。 このレベルを超えて関数を呼び出すと、コマンドが異常終了します。
1143 .TP 
1144 \fBGLOBIGNORE\fP
1145 パス名展開で無視するファイル名の集合を定義するパターンを コロンで区切って並べたリストです。 パス名展開パターンにマッチするファイル名が
1146 .SM
1147 \fBGLOBIGNORE\fP 内のパターンのどれかにもマッチする場合、 マッチしたもののリストから削除されます。
1148 .TP 
1149 \fBHISTCONTROL\fP
1150 履歴リストに入れるコマンドを制御する値をコロンで区切って並べたリストです。 \fIignorespace\fP の値が設定されていると、 \fB空白\fP
1151 文字で始まる行は履歴リストに入りません。 \fIignoredups\fP の値が設定されていると、 履歴の最後の行にマッチする行は履歴リストに入りません。
1152 \fIignoreboth\fP を指定すると \fIignorespace\fP と \fIignoredups\fP の両方が指定されます。 \fIerasedups\fP
1153 の値が設定されていると、行が保存される前に、 現在の行に一致する過去の行が履歴リストから削除されます。 上記以外の値を設定しても無視されます。
1154 .SM
1155 \fBHISTCONTROL\fP が設定されていない場合や、不正な値が設定されている場合には、 シェルのパーザが読み込んだ全ての行は
1156 \fBHISTIGNORE\fP の値が示す条件の下で履歴リストに保存されます。 複数行にまたがる複合コマンドの場合は 2
1157 番目以降の行が調べられることはありません。よって、これらは \fBHISTCONTROL\fP の値に関わらず履歴に追加されます。
1158 .TP 
1159 \fBHISTFILE\fP
1160 コマンド履歴が保存されるファイルの名前 (後述の
1161 .SM
1162 \fB履歴\fP を参照)。デフォルト値は \fI~/.bash_history\fP です。
1163 設定されていない場合、 対話シェルが終了するときに履歴の保存が行われません。
1164 .TP 
1165 \fBHISTFILESIZE\fP
1166 履歴ファイルに保持する履歴の最大数です。この変数に値が代入された場合、 その行数を越えないように、必要に応じて古いエントリを削除して履歴ファイルを
1167 切り詰めます。 デフォルト値は 500 です。対話シェルが終了するときにも、 履歴ファイルのサイズはファイル書き込みの後にこのサイズに切り詰められます。
1168 .TP 
1169 \fBHISTIGNORE\fP
1170 どのコマンド行を履歴リストに保存するかを決めるために使うパターンを コロンで区切って並べたリストです。 それぞれのパターンは行の先頭から比較され、
1171 行全体と完全に一致しなければなりません (`\fB*\fP' が暗黙的に追加されるこ とはありません)。行に対する各パターンの評価は
1172 \fBHISTCONTROL\fP で指定したチェックが行われた後で実行されます。 通常のシェルのパターンマッチング文字以外に、 `\fB&\fP'
1173 が履歴の前の行にマッチします。 バックスラッシュを使って `\fB&\fP' をエスケープできます。 マッチングを試みる前にバックスラッシュは取り除かれます。
1174 複数行にまたがる複合コマンドの場合、2 番目以降の行は調べられません。 よって、これらは
1175 .SM
1176 \fBHISTIGNORE\fP
1177 の値に関わらず履歴に追加されます。
1178 .TP 
1179 \fBHISTSIZE\fP
1180 コマンド履歴に記憶するコマンドの数 (後述の
1181 .SM
1182 \fBHISTORY\fP を参照)。 デフォルトは 500 です。
1183 .TP 
1184 \fBHISTTIMEFORMAT\fP
1185 この変数に空でない値が設定されると、 組み込みコマンド \fBhistory\fP で履歴エントリを表示するときに タイムスタンプを表示するための
1186 \fIstrftime\fP(3) の書式文字列 として使われます。 この変数が設定されると、ほかのシェルのセッションでも使えるように
1187 タイムスタンプは履歴ファイルに書き込まれます。 タイムスタンプはほかの履歴行と区別するために履歴のコメントとなります。
1188 .TP 
1189 \fBHOME\fP
1190 現在のユーザのホームディレクトリです。 組み込みコマンド \fBcd\fP のデフォルトの引き数になります。
1191 この変数の値は、チルダ展開を実行するときにも使われます。
1192 .TP 
1193 \fBHOSTFILE\fP
1194 .FN /etc/hosts
1195 と同じフォーマットであり、 シェルがホスト名を補完する必要があるときに読み込むファイルの名前を示します。
1196 シェルの実行中でも補完するホスト名のリストを変更できます。 この変数が変更された次の機会にホスト名の補完を試みるとき、 \fBbash\fP
1197 は新しいファイルの内容を既存のデータベースに追加します。
1198 .SM
1199 \fBHOSTFILE\fP が設定されているがその値が空文字列の場合や、
1200 読み込めるファイルの名前ではない場合には、 \fBbash\fP は補完可能なホスト名のリストを取得するために
1201 .FN /etc/hosts
1202 を使用します。
1203 .SM
1204 \fBHOSTFILE\fP が unset された場合は、ホスト名のリストはクリアされます。
1205 .TP 
1206 \fBIFS\fP
1207 \fI内部フィールド区切り文字 (Internal Field Separator)\fP です。展開を行った後に単語を分割する場合や、組み込みコマンドの
1208 \fBread\fP を使ったときに行を単語に分割する場合に使われます。 デフォルト値は
1209 \*(lq<空白><タブ><改行>\*(rq です。
1210 .TP 
1211 \fBIGNOREEOF\fP
1212 単独で入力された
1213 .SM
1214 \fBEOF\fP 文字を受け取ったときの対話シェルの動作を制御します。
1215 この変数が設定されていれば、指定されている値の数だけの
1216 .SM
1217 \fBEOF\fP 文字を連続して行頭の文字として入力しなければ \fBbash\fP
1218 は終了しません。この変数に数値以外の値が設定されている場合や、 空の値が設定されている場合には、デフォルト値として 10 が使われます。
1219 この変数が存在しなければ、
1220 .SM
1221 \fBEOF\fP 文字はシェルへの入力の終わりを示します。
1222 .TP 
1223 \fBINPUTRC\fP
1224 \fBreadline\fP の起動ファイルのファイル名です。これはデフォルト値の
1225 .FN ~/.inputrc
1226 (後述の
1227 .SM
1228 \fBREADLINE\fP を参照) を上書きします。
1229 .TP 
1230 \fBLANG\fP
1231 ロケールカテゴリが \fBLC_\fP で始まる変数によって明示的に指定されて いない場合、そうしたカテゴリのロケールを決定するのに使用されます。
1232 .TP 
1233 \fBLC_ALL\fP
1234 この変数はロケールカテゴリを指定する \fBLC_\fP 変数と \fBLANG\fP の値に優先します。
1235 .TP 
1236 \fBLC_COLLATE\fP
1237 この変数はパス名展開の結果をソートするときに使用される照合順序と、 パス名展開とパターンマッチングにおける
1238 範囲表現、等値クラス、照合順序の動作を決定します。
1239 .TP 
1240 \fBLC_CTYPE\fP
1241 この変数は、パス名展開とパターンマッチングにおける 文字の解釈と文字クラスに含まれる文字を決めます。
1242 .TP 
1243 \fBLC_MESSAGES\fP
1244 この変数は、\fB$\fP の後に続くダブルクォートされた文字列の 翻訳に使うロケールを決めます。
1245 .TP 
1246 \fBLC_NUMERIC\fP
1247 この変数は数字のフォーマットに使用するロケールカテゴリを決定します。
1248 .TP 
1249 \fBLINES\fP
1250 組み込みコマンド \fBselect\fP によって、選択されたリストを表示する際の行数の決定に用いられます。
1251 .SM
1252 \fBSIGWINCH\fP
1253 を受信すると自動的に設定されます。
1254 .TP 
1255 \fBMAIL\fP
1256 このパラメータにファイル名またはディレクトリ名が設定されており、かつ変数
1257 .SM
1258 \fBMAILPATH\fP が設定されていなければ、 \fBbash\fP
1259 は指定されたファイルまたはMaildier形式のディレクトリへの メールの到着をユーザに通知します。
1260 .TP 
1261 \fBMAILCHECK\fP
1262 \fBbash\fP がメールをチェックする頻度を (秒数で) 指定します。 デフォルト値は 60 秒です。 メールをチェックする時間になると、
1263 シェルはプライマリのプロンプトを表示する前にチェックを行います。 この変数が unset された場合、 あるいはこの変数に 0
1264 以上の数値以外が代入された場合は、 シェルはメールのチェックを行いません。
1265 .TP 
1266 \fBMAILPATH\fP
1267 メールのチェックに使うファイル名をコロンで区切って並べたリストです。 特定のファイルにメールが到着したときに出力される メッセージは、`?'
1268 を使ってファイル名をメッセージから区切ることによって 指定できます。メッセージのテキスト中で使われたときは、 \fB$_\fP
1269 は現在のメールファイルの名前に展開されます。 設定例:
1270 .RS
1271 .PP
1272 \fBMAILPATH\fP=\(aq/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has
1273 mail!"\(aq
1274 .PP
1275 この変数のデフォルト値は \fBbash\fP が与えますが、 \fBbash\fP が使うユーザのメールファイルの位置はシステム依存です
1276 (/var/mail/\fB$USER\fP 等)。
1277 .RE
1278 .TP 
1279 \fBOPTERR\fP
1280 値として 1 が設定されている場合、 \fBbash\fP は組み込みコマンド \fBgetopts\fP (後述の
1281 .SM
1282 \fBシェルの組み込みコマンド\fP
1283 を参照) を使って生成したエラーメッセージを表示します。
1284 .SM
1285 シェルが起動されたり、シェルスクリプトが実行されたりするたびに、
1286 .SM
1287 \fBOPTERR\fP は 1 に初期化されます。
1288 .TP 
1289 \fBPATH\fP
1290 コマンドの検索パスです。 シェルがコマンドを検索するディレクトリをコロンで区切って並べたリストです (後述の
1291 .SM
1292 \fBコマンドの実行\fP
1293 を参照)。
1294 .SM
1295 \fBPATH\fP 中の長さ 0 の (空の) ディレクトリ名は、カレントディレクトリを示します。 空のディレクトリ名は、2
1296 つのコロンを並べるか、 先頭や末尾のコロンで表します。 デフォルトのパスはシステム依存で、 \fBbash\fP
1297 をインストールしたシステム管理者が設定します。 一般的な値は
1298 .if  t \f(CW/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin\fP です。
1299 .if  n ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin'' です。
1300 .TP 
1301 \fBPOSIXLY_CORRECT\fP
1302 \fBbash\fP が起動したときにこの環境変数が設定されていると、 起動オプション \fB\-\-posix\fP
1303 を指定したときと同じように、どの初期化ファイルを読むよりも前に シェルが \fIposix モード\fP になります。
1304 シェルの実行中にこの変数が設定されると、 \fBbash\fP は
1305 .if  t \f(CWset -o posix\fP
1306 .if  n \fIset -o posix\fP
1307 コマンドを実行したときと同じように、\fIposix モード\fP が有効になります。
1308 .TP 
1309 \fBPROMPT_COMMAND\fP
1310 設定されていると、プライマリプロンプトを出す前に毎回、 この値がコマンドとして実行されます。
1311 .TP 
1312 \fBPROMPT_DIRTRIM\fP
1313 0 より大きい値が設定されると、 プロンプト文字列のエスケープシーケンス \fB\ew\fP や \fB\eW\fP (後述の
1314 .SM
1315 \fBプロンプト\fP
1316 を参照) を展開するときに、ディレクトリがパス名の最後からこの数だけ残ります。 削られた部分は省略記号に置き換えられます。
1317 .TP 
1318 \fBPS1\fP
1319 このパラメータの値は展開されてプライマリのプロンプト文字列として使われます。 (後述の
1320 .SM
1321 \fBプロンプト\fP を参照)、 デフォルト値は
1322 \*(lq\fB\es\-\ev\e$ \fP\*(rq です。
1323 .TP 
1324 \fBPS2\fP
1325 このパラメータの値は \fBPS1\fP と同じように展開され、セカンダリのプロンプト文字列として使われます。 デフォルト値は \*(lq\fB> \fP\*(rq
1326 です。
1327 .TP 
1328 \fBPS3\fP
1329 このパラメータの値は \fBselect\fP コマンド (前述の
1330 .SM
1331 \fBシェルの文法\fP を参照) のプロンプトとして使われます。
1332 .TP 
1333 \fBPS4\fP
1334 このパラメータは \fBPS1\fP と同じように展開されます。この値は実行トレース中に \fBbash\fP が表示する各コマンド前に出力されます。
1335 複数段の間接レベル (levels of indirection) を示すときは、
1336 .SM
1337 \fBPS4\fP
1338 の最初の文字が必要に応じて複数回表示されます。 デフォルト値は \*(lq\fB+ \fP\*(rq です。
1339 .TP 
1340 \fBSHELL\fP
1341 この環境変数にシェルのフルパス名が保存されています。 シェルを起動したときに設定されていない場合は、 \fBbash\fP
1342 が現在のユーザのログインシェルのフルパス名を代入します。
1343 .TP 
1344 \fBTIMEFORMAT\fP
1345 このパラメータの値は、予約語である \fBtime\fP が先頭に付いているパイプラインに対して、
1346 時間情報の表示の仕方を指定するフォーマット文字列として使われます。 \fB%\fP は、時間の値などに展開される エスケープシーケンスを示すための文字です。
1347 エスケープシーケンスとその意味を以下に示します。 ただし、ブレース ([]) は省略可能であることを表しま す。
1348 .sp .5
1349 .RS
1350 .PD 0
1351 .TP  10
1352 \fB%%\fP
1353 \fB%\fP 文字そのもの。
1354 .TP 
1355 \fB%[\fP\fIp\fP\fB][l]R\fP
1356 経過した秒数。
1357 .TP 
1358 \fB%[\fP\fIp\fP\fB][l]U\fP
1359 ユーザモードで使われた CPU の秒数。
1360 .TP 
1361 \fB%[\fP\fIp\fP\fB][l]S\fP
1362 システムモードで使われた CPU の秒数。
1363 .TP 
1364 \fB%P\fP
1365 CPU のパーセンテージ。(%U + %S) / %R で算出されます。
1366 .PD
1367 .RE
1368 .IP
1369 \fIp\fP 省略可能で、\fI精度 (precision)\fP が何桁であるかを指定します。 つまり小数点以下の桁数を指定します。この値が 0 ならば、
1370 小数点や小数の部分は出力されません。 また、小数点以下で指定できるのは 3 桁までです。 つまり、\fIp\fP の値が 3 より大きければ 3
1371 に変更されます。 \fIp\fP を指定しなければ、この値は 3 となります。
1372 .IP
1373 \fBl\fP は省略可能ですが、指定すると、分を含み、 \fIMM\fPm\fISS\fP.\fIFF\fP という形式の長いフォーマットになります。 小数を含むかどうかは
1374 \fIp\fP の値によって決まります。
1375 .IP
1376 この変数が設定されていなければ、 \fBbash\fP は
1377 \fB$\(aq\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS\(aq\fP という値が指定されているかのように動作します。
1378 この値が空文字列ならば、時間の情報は表示されません。 フォーマット文字列の表示の際には、末尾に改行文字が追加されます。
1379 .PD 0
1380 .TP 
1381 \fBTMOUT\fP
1382 0 より大きい値を設定すると、
1383 .SM
1384 \fBTMOUT\fP の値が組み込みコマンド \fBread\fP のデフォルトのタイムアウト値となります。
1385 \fBselect\fP コマンドは、端末からの入力の際に
1386 .SM
1387 \fBTMOUT\fP 秒入力がないと終了します。
1388 対話シェルではこの値は、プライマリのプロンプトを出してから 入力を待つ秒数として解釈されます この秒数待って入力が来ないと、 \fBbash\fP
1389 は終了します
1390 .TP 
1391 \fBTMPDIR\fP
1392 設定すると、値を \fBbash\fP がシェル用にテンポラリファイルを作る ディレクトリ名として使います。
1393 .TP 
1394 \fBauto_resume\fP
1395 この変数は、ユーザがジョブ制御をするときの方法を変更します。 この変数を設定した場合、1 語からなるリダイレクトなしの単純なコマンドを
1396 入力すると、停止中のジョブの実行再開候補として扱われます。 曖昧な指定は許されず、入力された文字列で始まるジョブが複数ある場合には、
1397 最後にアクセスされたものが選ばれます。 停止中のジョブの \fI名前\fP とは、コマンドを起動する際に使ったコマンドラインのことです。 この変数の値に
1398 \fIexact\fP が設定されている場合、 与えられた文字列は停止中のジョブの名前に 正確にマッチしなければなりません。 \fIsubstring\fP
1399 が設定されている場合は、 与えられた文字列は停止中のジョブの名前の部分文字列に マッチする必要があります。 \fIsubstring\fP
1400 という値は、ジョブ識別子の \fB%?\fP に似た機能を持っています (後述の
1401 .SM
1402 \fBジョブ制御\fP を参照)。
1403 これ以外の値が設定されている場合、 与えられた文字列は停止中のジョブの名前の 先頭部分でなければなりません。これはジョブ識別子の
1404 \fB%\fP\fIstring\fP と似た機能を持っています。
1405 .TP 
1406 \fBhistchars\fP
1407 2 文字または 3 文字で、 履歴の展開とトークン分割 (後述の
1408 .SM
1409 \fB履歴の展開\fP を参照) を制御します。 最初の文字は \fI履歴展開
1410 (history expansion)\fP 文字であり、 履歴展開の先頭を示す文字です。通常、これは `\fB!\fP' です。 2 番目の文字は \fI簡易置換
1411 (quick substitution)\fP 文字であり、直前に入力したコマンドの文字列を 別の文字列に置き換えて再実行するための省略表現として使います。
1412 デフォルト値は `\fB^\fP' です。 3 番目の文字は省略可能です。単語の先頭でこの文字が見つかると、
1413 行の残りの部分がコメントとなるような文字を指定します。 これは通常は `\fB#\fP' です。 履歴コメント文字があると、
1414 その行の残りの単語に対する履歴置換はスキップされます。 この文字があるからといって、
1415 必ずしもシェルのパーザが行の残りの部分をコメントとして扱うわけではありません。
1416 .PD
1417 .SS 配列
1418 \fBbash\fP は 1 次元のインデックスによる配列と連想配列の変数を扱うことができます。 全ての変数は配列として使用できます。 \fBdeclare\fP
1419 組み込みコマンドを使えば、明示的に配列を宣言できます。 配列のサイズの上限はありませんし、 メンバのインデックス付けや代入を
1420 連続的にしなければならないという条件もありません。 インデックスによる配列は整数 (算術式を含む) で参照します。 インデックスは 0 から始まります。
1421 連想配列は任意の文字列で参照します。
1422 .PP
1423 変数の代入の際に \fIname\fP[\fIsubscript\fP]=\fIvalue\fP という記法が使われた場合、配列は自動的に生成されます。
1424 \fIsubscript\fP は算術式として扱われますが、この式は評価すると 数値になるものでなければなりません。 \fIsubscript\fP を評価すると
1425 0 未満の数になる場合、最大のインデックス +1 からのオフセットとして扱われます。つまり、subscript が \-1
1426 のときは、配列の最後の要素を参照します。 インデックスによる配列を明示的に宣言するには、 \fBdeclare \-a \fP\fIname\fP を使います
1427 (後述の
1428 .SM
1429 \fBシェルの組み込みコマンド\fP を参照)。 \fBdeclare \-a \fP\fIname\fP\fB[\fP\fIsubscript\fP\fB]\fP
1430 も許されます。このとき \fIsubscript\fP は無視されます。
1431 .PP
1432 連想配列は \fBdeclare \-A \fP\fIname\fP で作ります。
1433 .PP
1434 組み込みコマンドの \fBdeclare\fP と \fBreadonly\fP を使うと、配列変数に対して属性を設定できます。
1435 どの属性も配列のメンバ全てに対して適用されます。
1436 .PP
1437 配列の代入は \fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP という形式の複合代入 (compound
1438 assignment) を用いて行います。 ここでそれぞれの \fIvalue\fP の形式は [\fIsubscript\fP]=\fIstring\fP です。
1439 インデックスによる配列では、ブラケット ([]) と subscript は省略できます。 ブラケットと subscript を省略しなかった場合、
1440 そのインデックスに対して代入が行われます。 省略した場合には、代入される要素のインデックスは、 その文の中で直前に代入されたインデックスに 1
1441 を加えたものになります。 インデックスは 0 から始まります。
1442 .PP
1443 連想配列への代入では、subscript は省略できません。
1444 .PP
1445 この記法は組み込みコマンド \fBdeclare\fP でも使えます。個別の配列要素に対する代入は、先に説明した
1446 \fIname\fP[\fIsubscript\fP]=\fIvalue\fP の記法を使って行います。
1447 .PP
1448 配列の任意の要素は、${\fIname\fP[\fIsubscript\fP]} を使って参照できます。 パス名展開との衝突を避けるためにブレースが必要です。
1449 \fIsubscript\fP が \fB@\fP か \fB*\fP ならば、配列の参照は \fIname\fP の全ての要素に展開されます。この 2 つの添字が異なるのは、
1450 単語がダブルクォートの内部にある場合だけです。 単語がダブルクォートされていれば、${\fIname\fP[*]} は 1 つの単語に展開されます。
1451 この単語は、配列の各メンバの値を特殊変数
1452 .SM
1453 \fBIFS\fP の最初の値で区切って並べたものです。一方、${\fIname\fP[@]} は、
1454 \fIname\fP の各要素を別々の単語に展開します。 配列のメンバが全くないときは、${\fIname\fP[@]} は空の単語に展開されます。
1455 単語の中でダブルクォートの展開が行われるときには、 元の単語のダブルクォートより前の部分の後に 最初のパラメータの展開結果がつながり、
1456 最後のパラメータの展開結果の後に 元の単語のダブルクォートより後の部分がつながります。 これは特殊パラメータ \fB*\fP や \fB@\fP の展開に似ています
1457 (前述の \fB特殊パラメータ\fP を参照)。 ${#\fIname\fP[\fIsubscript\fP]} は ${\fIname\fP[\fIsubscript\fP]}
1458 の長さに展開されます。 \fIsubscript\fP が \fB*\fP または \fB@\fP の場合は、
1459 配列中の要素数に展開されます。添字なしで配列変数を参照すると、 0 番目の要素を参照したことになります。
1460 .PP
1461 配列変数は subscript に対して値が代入されていれば 設定されているとみなされます。 空文字列は有効な値です。
1462 .PP
1463 組み込みコマンドの \fBunset\fP は配列の削除に使われます。\fBunset\fP \fIname\fP[\fIsubscript\fP] とすると、インデックスが
1464 \fIsubscript\fP である配列の要素が削除されます。 パス名展開による意図しない副作用に注意してください。 \fBunset\fP \fIname\fP
1465 (\fIname\fP は配列) または \fBunset\fP \fIname\fP[\fIsubscript\fP] (\fIsubscript\fP が \fB*\fP または
1466 \fB@\fP) とすると、 配列全体が削除されます。
1467 .PP
1468 組み込みコマンドの \fBdeclare\fP, \fBlocal\fP, \fBreadonly\fP いずれにおいても、 \fB\-a\fP
1469 オプションでインデックスによる配列を指定できます。 \fB\-A\fP また、オプションで連想配列を指定できます。 両方が指定されたときには、 \fB\-A\fP
1470 が優先します。 組み込みコマンド \fBread\fP では、 \fB\-a\fP オプションを使えば標準入力から読み込んだ単語のリストを 配列に代入できます。
1471 組み込みコマンド \fBset\fP と \fBdeclare\fP では、別の変数への代入に再利用できるような形で配列の値を表示します。
1472 .SH 展開
1473 展開はコマンドラインが単語へ分割された後に (コマンドライン上で) 行われます。行われる展開は 7 種類あります: \fIブレース展開 (brace
1474 expansion)\fP, \fIチルダ展開 (tilde expansion)\fP, \fIパラメータと変数の展開 (parameter and
1475 variable expansion)\fP, \fIコマンド置換 (command substitution)\fP, \fI算術式展開 (arithmetic
1476 expansion)\fP, \fI単語の分割 (word splitting)\fP, \fIパス名展開 (pathname expansion)\fP。
1477 .PP
1478 展開の順序は次のようになります: ブレース展開、チルダ展開、パラメータ・ 変数・算術式展開、コマンド置換 (左から右へ)、単語分割、パス名展開。
1479 .PP
1480 これらに加えて \fIプロセス置換 (process substitution)\fP をサポートできるシステムもあります。
1481 .PP
1482 展開した部分の単語の数が変化することがあるのは、ブレース展開、 単語の分割、パス名展開だけです。ほかの展開では、 1 つの単語は 1
1483 つの単語に展開されます。 この規則の唯一の例外は先に説明した "\fB$@\fP" と "\fB${\fP\fIname\fP\fB[@]}\fP" の展開 (
1484 .SM
1485 \fBパラメータ\fP を参照) だけです。
1486 .SS ブレース展開
1487 .PP
1488 \fIブレース展開 (brace expansion)\fP を使うと、任意の文字列を生成できます。この仕組みは \fIパス名展開\fPに似ていますが、
1489 生成されたファイル名が実在する必要はありません。 ブレース展開されるパターンは、 \fI前置部分 (preamble: 省略可能)\fP、
1490 対になるブレースで囲んだコンマ区切りの文字列またはシーケンス式、 \fI後置部分 (postscript: 省略可能)\fP を順に並べたものです。
1491 前置部分はブレース内にある文字列それぞれの先頭部分に追加され、 後置部分は左から右に順に展開されて得られた それぞれの文字列の末尾に追加されます。
1492 .PP
1493 ブレース展開は入れ子にできます。 展開して得られた文字列はソートされず、 左から右への順番がそのまま残ります。 例えば a\fB{\fPd,c,b\fB}\fPe
1494 は `ade ace abe' と展開されます。
1495 .PP
1496 シーケンス式は \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]}\fP の形になります。\fIx\fP と \fIy\fP は整数または 1
1497 つの文字で、 省略可能な \fIincr\fP は増減分の整数です。 整数が与えられると、 \fIx\fP と \fIy\fP
1498 の間の両端を含む数を全て列挙した形に展開されます。 与る整数の前に \fI0\fP を付けると、全ての項が同じ幅に揃えられます。 つまり、\fIx\fP か
1499 \fIy\fP のどちらかが 0 で始まる場合、生成される全ての項が 同じ文字数になるように、必要であれば前に 0 が付けられます。 文字が与えられると
1500 辞書順で \fIx\fP と \fIy\fP の間の両端を含む文字を全て列挙した形に展開されます。 \fIx\fP と \fIy\fP は同じ型である必要があります。 incr
1501 が与えられると、その値が各項の間の差となります。 incr のデフォルトは、1 または \-1 のうち適切な方です。
1502 .PP
1503 ブレース展開はほかのどの展開よりも前に実行されます。 また、ほかの展開において特殊な意味を持つ文字もそのまま結果に残ります。
1504 つまり、厳密にテキスト操作だけを行います。 \fBbash\fP は、展開の文脈やブレースの間のテキストに対して 文法的な解釈を適用することは一切ありません。
1505 .PP
1506 正しい形のブレース展開には、クォートされていない開きブレースと 閉じブレース、そしてシーケンス式か少なくとも 1 つのクォートされていないコンマが
1507 含まれていなければなりません。正しい形でないブレース展開は全て、 変更されないでそのまま残ります。 \fB{\fP や \fB,\fP
1508 をバックスラッシュでクォートすれば、 ブレース展開の一部と解釈されないようにできます。 パラメータ展開との衝突を避けるため、文字列 \fB${\fP
1509 はブレース展開の対象とは解釈されません。
1510 .PP
1511 この仕組みは、 生成される文字列の共通先頭部分が上記の例より長い場合に、 短縮表現としてよく使用されます:
1512 .RS
1513 .PP
1514 mkdir /usr/local/src/bash/{old,new,dist,bugs}
1515 .RE
1516 または
1517 .RS
1518 chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
1519 .RE
1520 .PP
1521 ブレース展開の導入によって、伝統的な \fBsh\fP とは少し非互換になった部分があります。 \fBsh\fP
1522 は単語の一部として開きブレースや閉じブレースが現われても特別扱いはせず、 そのまま出力に残します。 \fBbash\fP
1523 はブレース展開の結果として単語からブレースを取り除きます。例えば \fBsh\fP に \fIfile{1,2}\fP
1524 のように入力された単語はそのままの形で出力されますが、 \fBbash\fP ではこの同じ単語は展開されて \fIfile1 file2\fP
1525 のように出力されます。 厳密に \fBsh\fP と互換にしたければ、 \fBbash\fP を \fB+B\fP オプションを付けて起動するか、 \fBset\fP
1526 コマンドに \fB+B\fP オプションを与えてブレース展開を無効にしてください (後述する
1527 .SM
1528 \fBシェル組み込みコマンド\fP を参照)。
1529 .SS チルダ展開
1530 .PP
1531 クォートされていないチルダ (`\fB~\fP') で単語が始まった場合、 クォートされていないスラッシュよりも前にある文字全て
1532 (クォートされていないスラッシュが無ければ全ての文字)  はチルダプレフィックス (\fItilde\-prefix\fP) と解釈されます。
1533 クォートされている文字がチルダプレフィックス中に無ければ、 チルダプレフィックス中のチルダ以降の文字は、 \fIログイン名 (login name)\fP
1534 になるかもしれない文字列として扱われます。 このログイン名が空文字列ならば、チルダはシェルパラメータ
1535 .SM
1536 \fBHOME\fP
1537 の値に置き換えられます。
1538 .SM
1539 \fBHOME\fP が設定されていない場合は、代わりにシェルを実行しているユーザの
1540 ホームディレクトリに置き換えられます。 ログイン名が空でなければ、 チルダプレフィックスは指定されたログイン名に対応する
1541 ホームディレクトリに置き換えられます。
1542 .PP
1543 チルダプレフィックスが `~+' ならば、チルダプレフィックスはシェル変数
1544 .SM
1545 \fBPWD\fP の値に置き換えられます。 チルダプレフィックスが
1546 `~\-' ならば、シェル変数
1547 .SM
1548 \fBOLDPWD\fP の値に置き換えられます (値が設定されていれば)。
1549 チルダプレフィックス中のチルダより後の文字が数値 \fIN\fP であれば (数値の前に `+' や `\-' を置くこともできます)、
1550 チルダプレフィックスはディレクトリスタック内の対応する要素に置換されます。 置換される要素は、チルダプレフィックスを引き数として組み込みコマンド
1551 \fBdirs\fP を実行したときに表示されるものです。 チルダプレフィックスにおけるチルダ以降の文字が、 先行する `+' や `\-'
1552 のない数値である場合は、`+' であるとみなされます。
1553 .PP
1554 ログイン名が有効でない場合や、チルダ展開が失敗した場合には、 単語は置き換えられません。
1555 .PP
1556 全ての変数代入において、 \fB:\fP や \fB=\fP の直後にクォートされていないチルダプレフィックスがないかチェックが行われます。
1557 もし見つかった場合にはこれらもチルダ展開されます。 したがって、
1558 .SM
1559 \fBPATH\fP,
1560 .SM
1561 \fBMAILPATH\fP,
1562 .SM
1563 \fBCDPATH\fP への代入にチルダを含むファイル名を使えば、 シェルは展開された値を代入します。
1564 .SS パラメータの展開
1565 .PP
1566 `\fB$\fP' 文字があると、パラメータ展開、コマンド置換、 算術式展開が行われます。展開されるパラメータ名やシンボルは、 ブレースで括ることもできます。
1567 ブレースは省略可能ですが、 変数の直後に変数名の一部と解釈できる文字が置かれた場合に、
1568 その文字と共に変数が展開されてしまうのを防ぐために用意されています。
1569 .PP
1570 ブレースを使った場合、対になるのは最初に表れる `\fB}\fP' です。 ただしバックスラッシュでエスケープされているものや
1571 クォートされている文字列中のものは含まれませんし、ブレースの内側にある 算術式展開やコマンド置換、パラメータ展開に入っているものも含まれません。
1572 .PP
1573 .PD 0
1574 .TP 
1575 ${\fIparameter\fP}
1576 \fIparameter\fP の値に置換されます。ブレースが必要になるのは、 \fIparameter\fP が 2 桁以上の数字を持つ位置パラメータの場合や、
1577 \fIparameter\fP の直後の文字を名前の一部として解釈させたくない場合です。
1578 .PD
1579 .PP
1580 \fIparameter\fP の最初の文字が感嘆符ならば、変数間接展開が行われます。 \fBbash\fP は残りの \fIparameter\fP
1581 からなる変数の値を変数の名前と見なします。 そしてそこで得られた名前の変数を展開した値を、置換処理の続きで使います。 これが \fI間接展開\fP です。
1582 ただし ${!\fIprefix\fP*} や ${\fB!\fP\fIname\fP[\fI@\fP]} の展開は例外です。 これは以下で説明します。
1583 間接展開を表すには、感嘆符は左ブレースの直後に続ける必要があります。
1584 .PP
1585 以下に示すそれぞれの場合、\fIword\fP に対してチルダ展開、 パラメータ展開、コマンド置換、算術式展開が行われます。
1586 .PP
1587 部分文字列展開以外の場合、以下の形式で、 \fBbash\fP はパラメータが設定されているか、空ではないかを調べます。
1588 コロンを省略した場合には設定されているかどうかのみを調べます。
1589 .PP
1590 .PD 0
1591 .TP 
1592 ${\fIparameter\fP\fB:\-\fP\fIword\fP}
1593 \fBデフォルトの値を使います\fP。 \fIparameter\fP が設定されていないか空文字列であれば、 \fIword\fP
1594 を展開したものに置換されます。そうでなければ、 \fIparameter\fP の値に置換されます。
1595 .TP 
1596 ${\fIparameter\fP\fB:=\fP\fIword\fP}
1597 \fBデフォルトの値を代入します\fP。 \fIparameter\fP が設定されていないか空文字列であれば、 \fIword\fP を展開したものが
1598 \fIparameter\fP に代入されます。それから \fIparameter\fP の値への置換が行われます。
1599 位置パラメータや特殊パラメータへの代入をこのように行うことはできません。
1600 .TP 
1601 ${\fIparameter\fP\fB:?\fP\fIword\fP}
1602 \fB空文字列または設定されていない場合にエラーを表示します\fP。 \fIparameter\fP が空文字列または設定されていない場合、\fIword\fP
1603 を展開したもの (\fIword\fP がなければ パラメータが空文字列または設定されていないことを示すメッセージ)
1604 が標準エラー出力に出力されます。シェルが対話的でなければ、 シェルは終了します。パラメータに空文字列以外が設定されていれば、 \fIparameter\fP
1605 の値への置換が行われます。
1606 .TP 
1607 ${\fIparameter\fP\fB:+\fP\fIword\fP}
1608 \fB別の値を使用します\fP。 \fIparameter\fP が空文字列または設定されていなければ、空文字列に置換されます。 そうでなければ \fIword\fP
1609 を展開したものに置換されます。
1610 .TP 
1611 ${\fIparameter\fP\fB:\fP\fIoffset\fP}
1612 .PD 0
1613 .TP 
1614 ${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
1615 .PD
1616 \fB部分文字列展開\fP。 \fIparameter\fP を展開したものから最大 \fIlength\fP 文字を取り出します。 先頭の文字は \fIoffset\fP
1617 で指定します。\fIlength\fP を省略すると、 \fIoffset\fP で指定した文字を先頭にして、 \fIparameter\fP
1618 の残り全部が含まれる部分文字列に展開します。 \fIlength\fP と \fIoffset\fP は算術式です (後述の
1619 .SM
1620 \fB算術式評価\fP
1621 を参照)。 \fIoffset\fP を評価すると 0 未満の数になる場合、この値は \fIparameter\fP の値の末尾からのオフセットとして使われます。
1622 \fIlength\fP を評価すると 0 未満の数になる場合、 \fIparameter\fP が \fB@\fP ではなく、配列でも連想配列でもなければ、
1623 この値は文字数ではなく \fIparameter\fP の値の末尾からのオフセットとして使われ、 展開結果は 2 つのオフセットの間の部分文字列となります。
1624 \fIparameter\fP が \fB@\fP ならば、結果は \fIoffset\fP から始まる \fIlength\fP 個の位置パラメータになります。
1625 \fIparameter\fP が @ または * のインデックスが付いている配列名ならば、 結果は配列の
1626 ${\fIparameter\fP[\fIoffset\fP]} を先頭とする要素 \fIlength\fP 個となります。 負の \fIoffset\fP
1627 は、指定された配列の最大のインデックス + 1 からの相対値と解釈されます。 連想配列に部分文字列展開した場合の結果は決められていません。
1628 負のオフセットを指定するときには、:\- 式と混同されないよう、 1 つ以上の空白でコロンと離す必要があることに注意してください。
1629 位置パラメータを使う場合以外は、 部分文字列のインデックスは 0 から始まります。位置パラメータの場合には、 インデックスは 1 から始まります。
1630 位置パラメータが使われて \fIoffset\fP が 0 の場合、 \fB$0\fP の値が先頭に置かれます。
1631 .TP 
1632 ${\fB!\fP\fIprefix\fP\fB*\fP}
1633 .PD 0
1634 .TP 
1635 ${\fB!\fP\fIprefix\fP\fB@\fP}
1636 .PD
1637 \fB前方一致する変数名\fP。 \fIprefix\fP で始まる全ての変数の名前に展開して、
1638 .SM
1639 \fBIFS\fP
1640 特殊変数の最初の文字によって区切ります。 ダブルクォートの中で \fI@\fP が使われた場合、それぞれの変数の名前は 別々の単語に展開されます。
1641 .TP 
1642 ${\fB!\fP\fIname\fP[\fI@\fP]}
1643 .PD 0
1644 .TP 
1645 ${\fB!\fP\fIname\fP[\fI*\fP]}
1646 .PD
1647 \fB配列のキーのリスト\fP。 \fIname\fP が配列変数であれば、配列 \fIname\fP の インデックス (キー) のリストに展開されます。
1648 \fIname\fP が配列でない場合は、\fIname\fP が設定されていれば 0 に、 そうでなければ空に展開されます。 ダブルクォートの中で \fI@\fP
1649 が使われた場合、それぞれのキーは 別々の単語に展開されます。
1650 .TP 
1651 ${\fB#\fP\fIparameter\fP}
1652 \fBパラメータの長さ\fP。 \fIparameter\fP の値に含まれる文字数に置換されます。 \fIparameter\fP が \fB*\fP または \fB@\fP
1653 ならば、位置パラメータの数に置換されます。 \fIparameter\fP が \fB*\fP または \fB@\fP
1654 が添字になっている配列名ならば、配列中の要素数に置換されます。
1655 .TP 
1656 ${\fIparameter\fP\fB#\fP\fIword\fP}
1657 .PD 0
1658 .TP 
1659 ${\fIparameter\fP\fB##\fP\fIword\fP}
1660 .PD
1661 \fBパターンに前方一致した部分を取り除く\fP。 \fIword\fP が展開され、パス名展開の場合と同じようなパターンを作ります。 このパターンが
1662 \fIparameter\fP の値の先頭部分とマッチする場合、展開して得られる値は \fIparameter\fP を展開した値から最短一致パターン
1663 (\*(lq\fB#\fP\*(rqの場合)  または最長一致パターン (\*(lq\fB##\fP\*(rq の場合)  を取り除いたものになります。 \fIparameter\fP が
1664 \fB@\fP または \fB*\fP である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。
1665 \fIparameter\fP が \fB@\fP または \fB*\fP が添字になっている配列変数である場合、
1666 パターンを削除する操作は配列の全ての要素に順番に適用され、 展開結果はリストとして得られます。
1667 .TP 
1668 ${\fIparameter\fP\fB%\fP\fIword\fP}
1669 .PD 0
1670 .TP 
1671 ${\fIparameter\fP\fB%%\fP\fIword\fP}
1672 .PD
1673 \fBパターンに後方一致した部分を取り除く\fP。 \fIword\fP が展開され、パス名展開の場合と同じようなパターンを作ります。 このパターンが
1674 \fIparameter\fP を展開した値の末尾の部分とマッチする場合、展開結果は \fIparameter\fP を展開した値から最短一致パターン
1675 (\*(lq\fB%\fP\*(rq の場合)  または最長一致パターン (\*(lq\fB%%\fP\*(rq の場合)  を取り除いたものになります。 \fIparameter\fP が
1676 \fB@\fP または \fB*\fP である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。
1677 \fIparameter\fP が \fB@\fP または \fB*\fP が添字になっている配列変数である場合、
1678 パターンを削除する操作は配列の全ての要素に順番に適用され、 展開結果はリストとして得られます。
1679 .TP 
1680 ${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
1681 \fBパターンの置換\fP。 \fIpattern\fP が展開され、 パス名展開の場合と同じようなパターンを作ります。 \fIparameter\fP の展開が行われ、
1682 その値のうち \fIpattern\fP に最長一致する部分が \fIstring\fP に置換されます。 \fIpattern\fP が \fB/\fP
1683 で始まる場合には、\fIpattern\fP に マッチした部分は全て \fIstring\fP に置換されます。
1684 そうでない場合には、最初にマッチした部分だけが置換されます。 \fIpattern\fP が \fB#\fP で始まる場合には、パターンは \fIparameter\fP
1685 を展開した値の先頭にマッチしなければなりません。 \fIpattern\fP が \fB%\fP で始まる場合には、パターンは \fIparameter\fP
1686 を展開した値の末尾にマッチしなければなりません。 \fIstring\fP が空の場合には \fIpattern\fP にマッチした部分は削除されます。
1687 またこの場合には、\fIpattern\fP の後に続く \fB/\fP は省略可能です。 \fIparameter\fP が \fB@\fP または \fB*\fP
1688 である場合、置換操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。 \fIparameter\fP が \fB@\fP または
1689 \fB*\fP が添字になっている配列変数である場合、 置換操作は配列の全ての要素に順番に適用され、 展開結果はリストとして得られます。
1690 .TP 
1691 ${\fIparameter\fP\fB^\fP\fIpattern\fP}
1692 .PD 0
1693 .TP 
1694 ${\fIparameter\fP\fB^^\fP\fIpattern\fP}
1695 .TP 
1696 ${\fIparameter\fP\fB,\fP\fIpattern\fP}
1697 .TP 
1698 ${\fIparameter\fP\fB,,\fP\fIpattern\fP}
1699 .PD
1700 \fB大文字小文字の変換\fP。 \fIparameter\fP に含まれるアルファベットの大文字小文字を変換します。 \fIpattern\fP が展開され、
1701 パス名展開の場合と同じようなパターンを作ります。 \fB^\fP 演算子は \fIpattern\fP にマッチした小文字を大文字に変換します。 \fB,\fP 演算子は
1702 \fIpattern\fP にマッチした大文字を小文字に変換します。 \fB^^\fP 演算子と \fB,,\fP 演算子は、マッチした全ての文字を変換します。 \fB^\fP
1703 演算子と \fB,\fP 演算子の場合は、マッチした最初の文字だけ変換します。 \fIpattern\fP を省略した場合、\fB?\fP を指定したものとして扱われ、
1704 全ての文字にマッチします。 \fIparameter\fP が \fB@\fP または \fB*\fP
1705 である場合、大文字小文字の変換は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。 \fIparameter\fP が添字に \fB@\fP
1706 または \fB*\fP の付いた配列変数の場合は、配列の要素のそれぞれに大文字小文字の変換が適用され、 結果はリストに展開されます。
1707 .SS コマンド置換
1708 .PP
1709 \fIコマンド置換 (command substitution)\fP を用いると、 コマンド名をコマンドの出力で置き換えられます。 コマンド置換には以下の
1710 2 つの形式があります:
1711 .RS
1712 .PP
1713 \fB$(\fP\fIcommand\fP\|\fB)\fP
1714 .RE
1715 または
1716 .RS
1717 \fB\`\fP\fIcommand\fP\fB\`\fP
1718 .RE
1719 .PP
1720 \fBbash\fP は \fIcommand\fP を実行し、 command の標準出力でコマンド置換の部分を置き換えます。
1721 この際、末尾の改行文字は削除されます。 文字列の途中にある改行文字は削除されませんが、 単語分割の際に削除されることがあります。 コマンド置換
1722 \fB$(cat \fP\fIfile\fP\fB)\fP は、同じ意味を持ち、 しかも高速な \fB$(< \fP\fIfile\fP\fB)\fP に置き換え可能です。
1723 .PP
1724 バッククォートを使う古い形式の置換を用いたとき、 バックスラッシュは文字通りの意味を保ちますが、 \fB$\fP, \fB`\fP, \fB\e\fP
1725 の前にある場合は例外となります。 コマンド置換は、バックスラッシュが前置されていない バッククォートまでの部分です。 $(\^\fIcommand\fP\|)
1726 という形式を用いたときは、 括弧の間にある全ての文字がコマンドとなります。 特別扱いされる文字はありません。
1727 .PP
1728 コマンド置換は入れ子にできます。 バッククォート形式のときに入れ子を行うには、 内側のバッククォートをバックスラッシュでエスケープします。
1729 .PP
1730 置換がダブルクォート内部にある場合には、 置換の結果に対する単語分割とパス名展開は行われません。
1731 .SS 算術式展開
1732 .PP
1733 算術式展開を使うと、算術式を評価して、その結果に置換できます。 算術式展開のフォーマットを次に示します:
1734 .RS
1735 .PP
1736 \fB$((\fP\fIexpression\fP\fB))\fP
1737 .RE
1738 .PP
1739 \fIexpression\fP はダブルクォート内部にある場合と同様に扱われますが、 括弧の内側のダブルクォートが特別扱いされることはありません。
1740 式に含まれる全てのトークンに対して、 パラメータ展開・文字列展開・コマンド置換・クォートの削除が行われます。 算術式置換は入れ子にできます。
1741 .PP
1742 評価は後述の
1743 .SM
1744 \fB算術式評価\fP で示す規則に基づいて行われます。 \fIexpression\fP が不正であれば、 \fBbash\fP
1745 は評価の失敗を示すメッセージを出力し、置換を全く行いません。
1746 .SS プロセス置換
1747 .PP
1748 \fIプロセス置換 (process substitution)\fP がサポートされるのは、 名前付きパイプ (\fIFIFO\fP) または
1749 ファイル・ディスクリプターの \fB/dev/fd\fP 形式での指定 をサポートしているシステムです。これは \fB<(\fP\fIlist\^\fP\fB)\fP
1750 または \fB>(\fP\fIlist\^\fP\fB)\fP の形になります。 プロセス \fIlist\fP は、その入力や出力が \fIFIFO\fP または
1751 \fB/dev/fd\fP 中の 何らかのファイルに接続された状態で実行されます。 このファイルの名前は、展開の結果として、
1752 引き数の形で現在のコマンドに渡されます。 \fB>(\fP\fIlist\^\fP\fB)\fP の形式を使った場合、 ファイルへの書き込みは \fIlist\fP
1753 への入力となります。 \fB<(\fP\fIlist\^\fP\fB)\fP の形式を使った場合、 引き数として渡されたファイルは \fIlist\fP
1754 の出力を得るために読み込まれます。
1755 .PP
1756 利用可能であれば、プロセス置換 (process substitution) は、
1757 パラメータ展開、変数展開、コマンド置換、算術式展開と同時に行われます。
1758 .SS 単語の分割
1759 .PP
1760 パラメータ展開、コマンド置換、算術式展開が行われたのが、ダブル クォートの内側ではない場合、シェルは展開の結果をスキャンして、 \fI単語分割\fP
1761 を行います。
1762 .PP
1763 シェルは
1764 .SM
1765 \fBIFS\fP のそれぞれの文字を区切り文字として扱い、 ほかの展開の結果をこれらの文字によって単語に分割します。
1766 .SM
1767 \fBIFS\fP が設定されていないか、その値がデフォルト値の \fB<スペース><タブ><改行>\fP
1768 と全く同じならば、前段の展開の結果の先頭や末尾の \fB<スペース>\fP, \fB<タブ>\fP, \fB<改行>\fP
1769 の並びは無視され、 先頭と末尾以外の
1770 .SM
1771 \fBIFS\fP 文字の並びで単語が区切られます。
1772 .SM
1773 \fBIFS\fP
1774 の値がデフォルト以外のときに、 \fBスペース\fP や タブ という空白文字の並びが単語の先頭と末尾で無視されるのは、 その空白文字が
1775 .SM
1776 \fBIFS\fP の値に含まれるとき (
1777 .SM
1778 \fBIFS\fP の空白文字の一つであるとき) だけです。
1779 .SM
1780 \fBIFS\fP に含まれ、
1781 .SM
1782 \fBIFS\fP 空白文字ではない文字は全て、隣接する任意の
1783 .SM
1784 \fBIFS\fP 空白文字と一緒になってフィールドの区切りとなります。
1785 .SM
1786 \fBIFS\fP 空白文字の列も区切り文字として扱われます。
1787 .SM
1788 \fBIFS\fP の値が空文字列であれば、単語分割は全く行われません。
1789 .PP
1790 明示的に指定した空の引き数 (\^\fB"\^"\fP または \^\fB\(aq\^\(aq\fP\^)  は削除されずに残ります。
1791 クォートされていない暗黙的な空の引き数が、 値を持たないパラメータを展開した結果として得られますが、 これらは削除されます。
1792 値を持たないパラメータがダブルクォート内部で展開されると、 空である引き数となり、消されずに残ります。
1793 .PP
1794 展開が行われなければ単語分割も行われない点に注意してください。
1795 .SS パス名展開
1796 .PP
1797 \fB\-f\fP オプションが指定されていなければ、単語分割を行った後に \fBbash\fP はそれぞれの単語が \fB*\fP, \fB?\fP, \fB[\fP
1798 を含んでいるかどうか調べます。 これらの文字のいずれかが見つかると、その単語は \fIパターン\fP とみなされ、 パターンにマッチするファイル名を
1799 アルファベット順にソートしたリストに置換されます。 マッチするファイル名が見つからず、かつシェルのオプション \fBnullglob\fP
1800 が無効ならば、その単語は変更されずにそのまま残ります。 \fBnullglob\fP オプションが設定されていて、かつマッチするファイル名が見つからなければ、
1801 その単語は削除されます。 \fBfailglob\fP オプションが設定されていて、かつマッチするファイル名が見つからなければ、
1802 エラーメッセージが表示されコマンドは実行されません。 シェルのオプション \fBnocaseglob\fP
1803 が有効ならば、マッチングにおいてアルファベットの大文字と小文字は区別さ れません。 パターンをパス名展開に使うとき、名前の先頭やスラッシュの直後の
1804 \fB\*(lq.\*(rq\fP は明示的にマッチさせなければなりません。ただしシェルのオプション \fBdotglob\fP が設定されている場合は例外です。
1805 パス名のマッチングを行うとき、 スラッシュ文字は必ず明示的にマッチさせなければなりません。 これ以外の場合には、 \fB\*(lq.\*(rq\fP
1806 が特別扱いされることはありません。 シェルのオプション \fBnocaseglob\fP, \fBnullglob\fP, \fBfailglob\fP,
1807 \fBdotglob\fP の詳しい説明については、後述の
1808 .SM
1809 \fBシェルの組み込みコマンド\fP に書かれている \fBshopt\fP
1810 の説明を参照してください。
1811 .PP
1812 シェル変数
1813 .SM
1814 \fBGLOBIGNORE\fP を使って、 \fIパターン\fP にマッチするファイル名の集合を制限できます。
1815 .SM
1816 \fBGLOBIGNORE\fP が設定されていれば、マッチするファイル名のうち
1817 .SM
1818 \fBGLOBIGNORE\fP 中のパターンにもマッチしたものは、
1819 マッチしたもののリストから取り除かれます。 ファイル名 \fB\*(lq.\*(rq\fP と \fB\*(lq..\*(rq\fP は
1820 .SM
1821 \fBGLOBIGNORE\fP
1822 に空でない値が設定されていても必ず無視されます。しかし、
1823 .SM
1824 \fBGLOBIGNORE\fP に空でない値を設定するとシェルオプションの
1825 \fBdotglob\fP が有効になるので、 \fB\*(lq.\*(rq\fP で始まるほかのファイル名は全てマッチします。 \fB\*(lq.\*(rq\fP
1826 で始めるファイル名を無視する古い動作をさせるには、 \fB\*(lq.*\*(rq\fP を
1827 .SM
1828 \fBGLOBIGNORE\fP のパターンに含めてください。
1829 .SM
1830 \fBGLOBIGNORE\fP を unset すると、 \fBdotglob\fP オプションは無効になります。
1831 .PP
1832 \fBパターンマッチング\fP
1833 .PP
1834 パターンに含まれる文字のうち、以下の特殊パターン文字以外の文字は、 自分自身にマッチします。NUL 文字がパターン中に現われてはいけません。
1835 バックスラッシュは直後の文字をエスケープします。 このバックスラッシュは、マッチングでは無視されます
1836 特殊パターン文字をその文字そのものにマッチさせるためには、 クォートしなければなりません。
1837 .PP
1838 特殊パターン文字は以下の意味を持っています:
1839 .PP
1840 .PD 0
1841 .RS
1842 .TP 
1843 \fB*\fP
1844 空文字列を含む、任意の文字列にマッチします。 シェルオプション \fBglobstar\fP が有効で、 \fB*\fP がパス名展開に用いられる場面では、
1845 連続する 2 つの \fB*\fP だけのパターンが使われると、 その階層以下のディレクトリとそのサブディレクトリ、 そこにある全てのファイルにマッチします。
1846 2 つ連続した \fB*\fP の後に \fB/\fP が続く場合には、 ディレクトリとそのサブディレクトリのみにマッチします。
1847 .TP 
1848 \fB?\fP
1849 任意の 1 文字にマッチします。
1850 .TP 
1851 \fB[...]\fP
1852 括られた文字のうち任意の 1 文字にマッチします。 2 つの文字の間にハイフンを入れたものは、 \fI範囲表現 (range expression)\fP
1853 を表します。 ソート順で両端を含む 2 つの文字の間にある任意の 1 文字と マッチします。 ソートには現在のロケールの照合順序 (collating
1854 sequence)  と文字セットが用いられます。 \fB[\fP の次の文字が \fB!\fP または \fB^\fP ならば、括られた文字に含まれない任意の 1
1855 文字にマッチします。 範囲表現における文字のソート順は、 現在のロケール (およびシェル変数
1856 .SM
1857 \fBLC_COLLATE\fP
1858 が指定されていればその値)  によって決定されます。 \fB\-\fP は、文字集合の最初または最後の文字として含めると マッチングの対象にできます。 \fB]\fP
1859 は、文字集合の最初の文字として含めるとマッチングの対象にできます。
1860 .br
1861 .if  t .sp 0.5
1862 .if  n .sp 1
1863 \fB[\fP と \fB]\fP の間では、\fI文字クラス (character classes)\fP を指定できます。 指定には
1864 \fB[:\fP\fIclass\fP\fB:]\fP という記法を使います。ここで \fIclass\fP は POSIX 標準で定義されている以下のクラスのいずれかです:
1865 .PP
1866 .RS
1867 .B
1868 .if  n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
1869 .if  t alnum   alpha   ascii   blank   cntrl   digit   graph   lower   print   punct   space   upper   word   xdigit
1870 .br
1871 文字クラスは、そのクラスの属する任意の文字にマッチします。 文字クラス \fBword\fP は、文字、数字、_ にマッチします。
1872 .br
1873 .if  t .sp 0.5
1874 .if  n .sp 1
1875 \fB[\fP と \fB]\fP の間では、\fI等値クラス (equivalence class)\fP を指定できます。 指定には \fB[=\fP\fIc\fP\fB=]\fP
1876 という記法を使います。 これは現在のロケールにおける定義において \fIc\fP と同じ 照合重み (collation weight)
1877 を持つ全ての文字にマッチします。
1878 .br
1879 .if  t .sp 0.5
1880 .if  n .sp 1
1881 \fB[\fP と \fB]\fP の間では、\fB[.\fP\fIsymbol\fP\fB.]\fP という記述は照合シンボル \fIsymbol\fP にマッチします。
1882 .RE
1883 .RE
1884 .PD
1885 .PP
1886 組み込みコマンドの \fBshopt\fP を使ってシェルのオプション \fBextglob\fP が有効にされていると、
1887 拡張パターンマッチング演算子がいくつか認識されるようになります。 以下の説明では、\fIpattern\-list\fP は \fB|\fP で区切られた 1
1888 つ以上のパターンのリストであるものとします。 以下のサブパターンを 1 つあるいは複数使うことにより、 複合パターンを作れます。
1889 .sp 1
1890 .PD 0
1891 .RS
1892 .TP 
1893 \fB?(\fP\^\fIpattern\-list\^\fP\fB)\fP
1894 与えられたパターンが 0 回または 1 回現われるとマッチします。
1895 .TP 
1896 \fB*(\fP\^\fIpattern\-list\^\fP\fB)\fP
1897 与えられたパターンが 0 回以上現われるとマッチします。
1898 .TP 
1899 \fB+(\fP\^\fIpattern\-list\^\fP\fB)\fP
1900 与えられたパターンが 1 回以上現われるとマッチします。
1901 .TP 
1902 \fB@(\fP\^\fIpattern\-list\^\fP\fB)\fP
1903 与えられたパターンに 1 回だけマッチします。
1904 .TP 
1905 \fB!(\fP\^\fIpattern\-list\^\fP\fB)\fP
1906 与えられたパターンのどれでもないものにマッチします。
1907 .RE
1908 .PD
1909 .SS クォートの削除
1910 .PP
1911 先に処理される展開の後、クォートされていない \fB\e\fP, \fB'\fP, \^\fB"\fP\^ のうち、先の展開の結果でないものは全て削除されます。
1912 .SH リダイレクト
1913 シェルが解釈する特別な記法を用いると、コマンドの実行前に入出力を \fIリダイレクト\fP できます。またリダイレクトを使うと、
1914 現在のシェル実行環境に対してファイルをオープンしたり クローズしたりできます。以下に示すリダイレクト演算子は、 \fI単純なコマンド\fP
1915 の前や途中に置くことができ、また \fIコマンド\fP の後に置けます。 リダイレクトは左から右へと、現われた順に処理されます。
1916 .PP
1917 ファイル・ディスクリプター番号で始まるリダイレクトでは、 代わりに {\fIvarname\fP} という形式の単語で始めることもできます。
1918 この場合、>&\- と <&\- 以外のリダイレクト演算子では、 シェルは 10 より大きいファイル・ディスクリプターを割り当て、
1919 \fIvarname\fP に代入します。 {\fIvarname\fP} で始まる >&\- や <&\- の場合には、\fIvarname\fP の値は
1920 クローズするファイル・ディスクリプターを示します。
1921 .PP
1922 以下の説明においては、ファイル・ディスクリプター番号が省略され、 かつリダイレクト演算子の最初の文字が \fB<\fP ならば、リダイレクトは標準入力
1923 (ファイル・ディスクリプター 0) を参照します。 リダイレクト演算子の最初の文字が \fB>\fP ならば、リダイレクトは標準出力
1924 (ファイル・ディスクリプター 1) を参照します。
1925 .PP
1926 以下の説明では、リダイレクト演算子の次の単語に対しては、 特に説明しない限り、 ブレース展開・チルダ展開・パラメータ展開・コマンド置換・
1927 算術式展開・クォート削除・パス名展開・単語分割が行われます。 その単語が複数の単語に展開された場合はエラーになります。
1928 .PP
1929 リダイレクトの順番には意味がある点に注意してください。 例えば、次のコマンド
1930 .RS
1931 .PP
1932 ls \fB>\fP dirlist 2\fB>&\fP1
1933 .RE
1934 .PP
1935 は標準出力と標準エラー出力を両方ともファイル \fIdirlist\fP に書き込みますが、次のコマンド
1936 .RS
1937 .PP
1938 ls 2\fB>&\fP1 \fB>\fP dirlist
1939 .RE
1940 .PP
1941 では標準出力だけがファイル \fIdirlist\fP に書き込まれます。なぜなら後者の場合には、標準エラー出力は \fIdirlist\fP
1942 にリダイレクトされる前の標準出力の複製となるからです。
1943 .PP
1944 \fBbash\fP は、 以下の表にあるようなファイル名がリダイレクトに使用されると、 それらを特別に扱います。
1945 .RS
1946 .PP
1947 .PD 0
1948 .TP 
1949 \fB/dev/fd/\fP\fIfd\fP
1950 \fIfd\fP が有効な整数ならばファイル・ディスクリプター \fIfd\fP が複製されます。
1951 .TP 
1952 \fB/dev/stdin\fP
1953 ファイル・ディスクリプター 0 が複製されます。
1954 .TP 
1955 \fB/dev/stdout\fP
1956 ファイル・ディスクリプター 1 が複製されます。
1957 .TP 
1958 \fB/dev/stderr\fP
1959 ファイル・ディスクリプター 2 が複製されます。
1960 .TP 
1961 \fB/dev/tcp/\fP\fIhost\fP\fB/\fP\fIport\fP
1962 \fIhost\fP が有効なホスト名またはインターネットアドレスで \fIport\fP が整数のポート番号ならば、 \fBbash\fP は対応するソケットに対して
1963 TCP 接続のオープンを試みます。
1964 .TP 
1965 \fB/dev/udp/\fP\fIhost\fP\fB/\fP\fIport\fP
1966 \fIhost\fP が有効なホスト名またはインターネットアドレスで \fIport\fP が整数のポート番号ならば、 \fBbash\fP は対応するソケットに対して
1967 UDP 接続のオープンを試みます。
1968 .PD
1969 .RE
1970 .PP
1971 ファイルのオープンや作成に失敗すると、リダイレクトも失敗します。
1972 .PP
1973 9 より大きいファイル・ディスクリプターを使ったリダイレクトには注意が 必要です。シェルが内部的に使うファイル・ディスクリプターと競合する場合が
1974 あるからです。
1975 .SS 入力のリダイレクト
1976 .PP
1977 入力をリダイレクトすると、 \fIword\fP を展開した結果の名前を持つファイルがオープンされ、 ファイル・ディスクリプター \fIn\fP
1978 で読み込めるようになります。 \fIn\fP が指定されていなければ、読み込みは標準入力 (ファイル・ディスクリプター 0) で行われます。
1979 .PP
1980 入力のリダイレクトは、一般的には以下の形式です:
1981 .RS
1982 .PP
1983 [\fIn\fP]\fB<\fP\fIword\fP
1984 .RE
1985 .SS 出力のリダイレクト
1986 .PP
1987 出力をリダイレクトすると、 \fIword\fP の展開した結果の名前を持つファイルがオープンされ、 ファイル・ディスクリプター \fIn\fP
1988 で書き込めるようになります。 \fIn\fP が指定されていなければ、書き込みは標準出力 (ファイル・ディスクリプター 1) に行われます。
1989 ファイルが存在しなかった場合は作成されます。 ファイルが存在した場合はサイズ 0 に切り詰められます。
1990 .PP
1991 出力のリダイレクトは、一般的には以下の形式です:
1992 .RS
1993 .PP
1994 [\fIn\fP]\fB>\fP\fIword\fP
1995 .RE
1996 .PP
1997 リダイレクト演算子が \fB>\fP であり、かつ 組み込みコマンド \fBset\fP で \fBnoclobber\fP オプションが有効になっている場合、
1998 \fIword\fP の展開で得たファイルが存在し、 かつそれが通常ファイルならば、リダイレクトは失敗します。 リダイレクト演算子が \fB>|\fP
1999 の場合、もしくは リダイレクト演算子が \fB>\fP で組み込みコマンド \fBset\fP で \fBnoclobber\fP
2000 オプションが有効になっていない場合、 \fIword\fP という名前のファイルが存在していてもリダイレクトが試みられます。
2001 .SS リダイレクトによる追加出力
2002 .PP
2003 この形式を使って出力のリダイレクトを行うと、 \fIword\fP を展開した結果の名前を持つファイルがオープンされ、 ファイル・ディスクリプター \fIn\fP
2004 に対する出力がこのファイルに追加されるようになります。 \fIn\fP を指定しなければ、標準出力 (ファイル・ディスクリプター 1) で追加されます。
2005 ファイルが存在しなければ、新しく作られます。
2006 .PP
2007 追加出力は一般的には以下の形式です:
2008 .RS
2009 .PP
2010 [\fIn\fP]\fB>>\fP\fIword\fP
2011 .RE
2012 .PP
2013 .SS 標準出力と標準エラー出力のリダイレクト
2014 .PP
2015 この構造を使うと、 標準出力 (ファイル・ディスクリプター 1) と標準エラー出力 (ファイル・ディスクリプター 2) の両方を、 \fIword\fP
2016 を展開した結果の名前を持つファイルにリダイレクトできます。
2017 .PP
2018 標準出力と標準エラー出力に対する形式は 2 つあります:
2019 .RS
2020 .PP
2021 \fB&>\fP\fIword\fP
2022 .RE
2023
2024 .RS
2025 \fB>&\fP\fIword\fP
2026 .RE
2027 .PP
2028 両者のうち望ましいのは前者の方です。 上記は以下と同じ意味です:
2029 .RS
2030 .PP
2031 \fB>\fP\fIword\fP 2\fB>&\fP1
2032 .RE
2033 .PP
2034 .SS 標準出力と標準エラー出力の追加出力
2035 .PP
2036 この構造を使うと、 標準出力 (ファイル・ディスクリプター 1) と標準エラー出力 (ファイル・ディスクリプター 2) の両方を、 \fIword\fP
2037 を展開した結果の名前を持つファイルに追加できます。
2038 .PP
2039 標準出力と標準エラー出力の追加出力は以下の形式です:
2040 .RS
2041 .PP
2042 \fB&>>\fP\fIword\fP
2043 .RE
2044 .PP
2045 これは次のものと同じ意味です:
2046 .RS
2047 .PP
2048 \fB>>\fP\fIword\fP 2\fB>&\fP1
2049 .RE
2050 .SS "ヒアドキュメント(Here Documents)"
2051 .PP
2052 この形式のリダイレクトを用いると、 シェルは現在のソースから入力を読み込みます。 この読み込みは \fIword\fP を単独で含む行
2053 (末尾にブランク文字があってはいけません)  が現われるまで続きます。 その行までに読み込んだ行は、 コマンドの標準入力として扱われます。
2054 .PP
2055 ヒアドキュメントの形式を以下に示します:
2056 .RS
2057 .PP
2058 .nf
2059 \fB<<\fP[\fB\-\fP]\fIword\fP
2060         \fIhere\-document\fP
2061 \fIdelimiter\fP
2062 .fi
2063 .RE
2064 .PP
2065 \fIword\fP に対するパラメータ展開・コマンド置換・算術式展開・ パス名展開は全く行われません。 \fIword\fP が一部でもクォートされている場合は、
2066 \fIdelimiter\fP は \fIword\fP のクォートをほどいた結果 (クォート文字を削除した結果) となり、
2067 ヒアドキュメントに含まれる行では展開が行われなくなります。 \fIword\fP がクォートされていなければ、 ヒアドキュメント中の全ての行に対して
2068 パラメータ展開・コマンド置換・算術式展開が行われます。 \fIword\fP がクォートされていない場合には、 \fB\e<newline>\fP
2069 という文字列は無視され、 \fB\e\fP, \fB$\fP, \fB`\fP といった文字は \fB\e\fP を用いてクォートしなければなりません。
2070 .PP
2071 リダイレクト演算子が \fB<<\-\fP ならば、行頭にあるタブ文字は全て入力行および \fIdelimiter\fP を含む行から取り除かれます。
2072 これにより、シェルスクリプト中のヒアドキュメントを 自然な形でインデントさせることができます。
2073 .SS "ヒアストリング(Here Strings)"
2074 ヒアドキュメントの変形で、以下の形式です:
2075 .RS
2076 .PP
2077 .nf
2078 \fB<<<\fP\fIword\fP
2079 .fi
2080 .RE
2081 .PP
2082 \fIword\fP は展開されてコマンドの標準入力に与えられます。
2083 .SS ファイル・ディスクリプターの複製
2084 .PP
2085 リダイレクト演算子
2086 .RS
2087 .PP
2088 [\fIn\fP]\fB<&\fP\fIword\fP
2089 .RE
2090 .PP
2091 を使うと入力ファイル・ディスクリプターを複製できます。 \fIword\fP が 1 桁以上の数値に展開された場合、 \fIn\fP
2092 で示されるファイル・ディスクリプターが生成され、 \fIword\fP で指定された数値のファイル・ディスクリプターのコピーとなります。 \fIword\fP
2093 に含まれる数値が入力用にオープンされたファイル・ディスクリプターを 指していない場合、リダイレクト・エラーが起きます。 \fIword\fP を評価した結果が
2094 \fB\-\fP となった場合、ファイル・ディスクリプター \fIn\fP はクローズされます。 \fIn\fP が指定されていない場合、標準入力
2095 (ファイル・ディスクリプター 0) が使われます。
2096 .PP
2097 同様に、演算子
2098 .RS
2099 .PP
2100 [\fIn\fP]\fB>&\fP\fIword\fP
2101 .RE
2102 .PP
2103 を使って出力ファイル・ディスクリプターを複製できます。 \fIn\fP が指定されていない場合は、標準出力 (ファイル・ディスクリプター 1) が使われます。
2104 \fIword\fP に含まれる数値が、出力用にオープンされた ファイル・ディスクリプターを指していない場合、
2105 リダイレクト・エラーが起きます。特別な場合ですが、 \fIn\fP が省略され、かつ \fIword\fP が 1 桁以上の数字には展開されなかった場合、
2106 前に説明したように標準出力と標準エラー出力がリダイレクトされます。
2107 .SS ファイル・ディスクリプターの変更
2108 .PP
2109 リダイレクト演算子
2110 .RS
2111 .PP
2112 [\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP
2113 .RE
2114 .PP
2115 を使うと、ファイル・ディスクリプターの \fIdigit\fP を \fIn\fP に変更します。 \fIn\fP が指定されていない場合は、標準入力
2116 (ファイル・ディスクリプター 0) が使われます。 \fIdigit\fP は \fIn\fP に複製された後にクローズされます。
2117 .PP
2118 同様に、演算子
2119 .RS
2120 .PP
2121 [\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP
2122 .RE
2123 .PP
2124 を使うと、ファイル・ディスクリプターの \fIdigit\fP を \fIn\fP に変更します。 \fIn\fP が指定されていない場合は、標準出力
2125 (ファイル・ディスクリプター 1) が使われます。
2126 .SS 読み書きのためのファイル・ディスクリプターのオープン
2127 .PP
2128 リダイレクト演算子
2129 .RS
2130 .PP
2131 [\fIn\fP]\fB<>\fP\fIword\fP
2132 .RE
2133 .PP
2134 を使うと、 \fIword\fP を展開した結果の名前を持つファイルがファイル・ディスクリプター \fIn\fP での読み書きのためにオープンされます。 \fIn\fP
2135 が指定されていなければ、 ファイル・ディスクリプター 0 で読み書きが行われます。 ファイルが存在しなければ、新しく生成されます。
2136 .SH エイリアス
2137 \fIエイリアス(alias)\fP を使うと、 ある単語が単純なコマンドの先頭の単語として使われた場合に、 この文字列を別の単語に置換できます。
2138 シェルはエイリアスのリストを管理しています。 このリストは組み込みコマンドの \fBalias\fP と \fBunalias\fP を使って設定および削除できます
2139 (後述の
2140 .SM
2141 \fBシェルの組み込みコマンド\fP を参照)。 各コマンドの最初の単語がクォートされていない場合、 エイリアスかどうかが確認され、
2142 エイリアスならばその単語はそのエイリアスのテキストと置換されます。 \fB/\fP、\fB$\fP、\fB\`\fP、\fB=\fP、シェルの \fIメタ文字
2143 (metacharacters)\fP やクォート文字はエイリアス名には使えません。 エイリアス名と置換されるテキストには、
2144 シェルの入力として有効なものは何でも含めることができます。 これには先に挙げた \fIメタ文字\fP も含まれます。 置換されたテキストの最初の単語に対しても
2145 エイリアスかどうかの評価がされますが、 最初の単語が展開されるエイリアスと同じ場合には 展開は一度しか行われません。つまり \fBls\fP が \fBls
2146 \-F\fP のエイリアスとなっているような場合には、 \fBbash\fP は置換される文字列を再帰的に展開することはありません。 エイリアスの値の最後の文字が
2147 \fIブランク文字\fP の場合、エイリアスに続く次のコマンドの単語に対しても エイリアス展開が試みられます。
2148 .PP
2149 エイリアスは \fBalias\fP コマンドで作成とリスト表示を行い、 \fBunalias\fP コマンドで削除します。
2150 .PP
2151 置換されるテキストに引き数を入れる仕組みはありません。 引き数が必要ならば、シェル関数を使わなければなりません (後述の
2152 .SM
2153 \fB関数\fP
2154 を参照)
2155 .PP
2156 シェルが対話的でないときには、 \fBshopt\fP コマンドによって \fBexpand_aliases\fP オプションが設定されていない場合に限り、
2157 エイリアスの展開は行われません (後述の
2158 .SM
2159 \fBシェルの組み込みコマンド\fP における \fBshopt\fP の説明を参照)。
2160 .PP
2161 エイリアスの定義や利用に関係する規則には、紛らわしい点があります。 \fBbash\fP は、ある行に書かれているコマンドを実行する前に必ず、 少なくとも 1
2162 回は行全体を読み込みます。 エイリアスが展開されるのはコマンドを読み込んだときであり、 実行するときではありません。
2163 したがって、別のコマンドと同じ行でエイリアス定義を行った場合には、 次の入力行が読み込まれるまではエイリアスの効果は現われません。
2164 同じ行にあるエイリアス定義の後のコマンドは、 新しいエイリアスの影響を受けません。 この動作は関数を実行する場合にも問題になります。
2165 エイリアスが展開されるのは関数定義が読み込まれるときであり、 関数が実行されるときではありません。 なぜなら、関数定義自身も複合コマンドだからです。
2166 その結果として、関数内で定義されたエイリアスは、 その関数が実行されるまでは利用できません。 安全のため、エイリアス定義は独立した行で行うべきです。
2167 複合コマンド内で \fBalias\fP を使ってはいけません。
2168 .PP
2169 ほとんど全ての用途において、 シェル関数でエイリアスを代用できます。
2170 .SH 関数
2171 シェル関数は、後で使うために一連のコマンドを保存するものです。 シェル関数の定義は既に
2172 .SM
2173 \fBシェルの文法\fP で説明しています。
2174 シェル関数名が単純なコマンド名として使われた場合、 関数名に対応するコマンド群が実行されます。 関数は現在のシェルのコンテキスト内で実行されます。
2175 つまり、新しいプロセスを生成して関数を処理することはありません (これはシェルスクリプトと対照的な点です)。
2176 関数の実行時には、関数に与えた引き数が位置パラメータとなります。 特殊パラメータ \fB#\fP は更新され、この変更が反映されます。 特殊パラメータ
2177 \fB0\fP は変わりません。 関数の実行中は
2178 .SM
2179 \fBFUNCNAME\fP 変数の最初の要素に関数の名前が設定されます。
2180 .PP
2181 上記以外は、シェル実行環境の状態は全て、関数とその呼び出し側で同じになります。 ただし、以下の例外があります:
2182 .SM
2183 \fBDEBUG\fP と
2184 \fBRETURN\fP のトラップ (後述の
2185 .SM
2186 \fBシェルの組み込みコマンド\fP の項で、組み込みコマンド \fBtrap\fP の説明を参照) は、
2187 関数に \fBtrace\fP 属性 (後述の組み込みコマンド
2188 .SM
2189 \fBdeclare\fP の説明を参照) が与えられている場合や、\fB\-o
2190 functrace\fP シェルオプションが 組み込みコマンド \fBset\fP によって有効になっている (つまり、全ての関数が \fBDEBUG\fP と
2191 \fBRETURN\fP のトラップを継承している) 場合を除いて 継承されません。
2192 .SM
2193 \fBERR\fP トラップは、\fB\-o errtrace\fP
2194 シェルオプションが有効になっていない限り 継承されません。
2195 .PP
2196 関数ローカルの変数は、組み込みコマンド \fBlocal\fP で宣言できます。 普通は、変数とその値は関数とその呼び出し側で共有されます。
2197 .PP
2198 \fBFUNCNEST\fP 変数に 0 より大きい数値をセットすると、 関数呼び出しを何重まで許すかの最大レベルを決めます。
2199 このレベルを超えて関数を呼び出すと、コマンドが異常終了します。
2200 .PP
2201 組み込みコマンド \fBreturn\fP が関数中で実行された場合、関数は完了し、 関数呼び出しの次のコマンドから実行が再開されます。
2202 再開される前に、\fBRETURN\fP トラップに設定されたコマンドが実行されます。 関数の完了時には、位置パラメータの値と特殊パラメータ \fB#\fP
2203 の値は、関数の実行前の値に戻ります。
2204 .PP
2205 関数の名前と定義をリスト表示するには、組み込みコマンドの \fBdeclare\fP や \fBtypeset\fP を、オプション \fB\-f\fP
2206 を付けて実行します。 \fBdeclare\fP や \fBtypeset\fP をオプション \fB\-F\fP で実行すると、関数名だけがリスト表示されます。
2207 また、\fBextdebug\fP シェルオプションが有効になっていると、 ソースファイルと行番号も表示されます。 関数をエクスポートして、
2208 サブシェルでその関数が自動的に定義されている状態にできます。 これを行うには、組み込みコマンドの \fBexport\fP に \fB\-f\fP
2209 オプションを付けて実行します。 組み込みコマンドの \fBunset\fP に \fB\-f\fP オプションを付けて実行することで、
2210 関数定義を削除することもできます。 同じ名前のシェル関数と変数がシェルの子プロセスにエクスポートされると、
2211 同じ環境の中に全く同じ名前のエントリが複数できてしまうことに 注意してください。これが問題を起こす場合には注意が必要です。
2212 .PP
2213 関数は再帰させることができます。\fBFUNCNEST\fP 変数を使うと、 関数の呼び出しスタックの深さを制限し、関数の呼び出し回数を制限する
2214 ことができます。 デフォルトでは再帰呼び出し回数に制限は課せられていません。
2215 .SH 算術式評価
2216 シェルにおいては、特定の状況下で算術式を評価させることができます (組み込みコマンドの \fBlet\fP と \fB算術式展開\fP を参照)。
2217 評価は固定長の整数として行われ、 オーバーフローのチェックは行われません。 ただし、0 での除算はトラップされ、エラーとしてのフラグが立てられます。
2218 演算子とその優先度、結合規則は C 言語と同じです。 以下のリストは、 同じ優先度を持つ演算子をグループとしてまとめて列挙したものです。
2219 優先度の高いものから順に列挙しています。
2220 .PP
2221 .PD 0
2222 .TP 
2223 \fIid\fP\fB++ \fP\fIid\fP\fB\-\-\fP
2224 変数を評価し、その後 increment (加算)/ decrement (減算) する。
2225 .TP 
2226 \fB++\fP\fIid\fP\fB \-\-\fP\fIid\fP
2227 変数を increment (加算) / decrement (減算) してから評価する。
2228 .TP 
2229 \fB\- +\fP
2230 単項式の負と正
2231 .TP 
2232 \fB! ~\fP
2233 論理的否定とビット単位の否定
2234 .TP 
2235 \fB**\fP
2236 指数 (累乗)
2237 .TP 
2238 \fB* / %\fP
2239 乗算、除算、剰余
2240 .TP 
2241 \fB+ \-\fP
2242 加算と減算
2243 .TP 
2244 \fB<< >>\fP
2245 左ビットシフトと右ビットシフト
2246 .TP 
2247 \fB<= >= < >\fP
2248 比較
2249 .TP 
2250 \fB== !=\fP
2251 等値と非等値
2252 .TP 
2253 \fB&\fP
2254 ビット単位の AND
2255 .TP 
2256 \fB^\fP
2257 ビット単位の排他的 OR
2258 .TP 
2259 \fB|\fP
2260 ビット単位の OR
2261 .TP 
2262 \fB&&\fP
2263 論理的 AND
2264 .TP 
2265 \fB||\fP
2266 論理的 OR
2267 .TP 
2268 \fIexpr\fP\fB?\fP\fIexpr\fP\fB:\fP\fIexpr\fP
2269 条件付き実行
2270 .TP 
2271 \fB= *= /= %= += \-= <<= >>= &= ^= |=\fP
2272 代入
2273 .TP 
2274 \fIexpr1\fP\fB , \fP\fIexpr2\fP
2275 コンマ
2276 .PD
2277 .PP
2278 シェル変数をオペランドにすることもできます。 パラメータ展開は式の評価より前に行われます。 式の中では、シェル変数を (パラメータ展開規則を用いずに)
2279 変数名で参照できます。 値が空のシェル変数や宣言されていないシェル変数は、 パラメータの展開の文法を使わずに名前を参照されると、 0
2280 として評価されます。 変数の値は、変数が参照されたときや、\fBdeclare \-i\fP によって \fI整数\fP 属性が設定された変数に値が代入されるときに、
2281 算術式として評価されます。 空の値は 0 として評価されます。 式で用いるためにシェル変数の \fI整数属性\fP を有効にする必要はありません。
2282 .PP
2283 先頭が 0 である定数は 8 進数として解釈されます。 先頭が 0x または 0X ならば 16 進数として解釈されます。 それ以外の場合には、数値は
2284 [\fIbase#\fP]n の形式で表します。ここで \fIbase\fP は 2 から 64 の間の 10 進数であり、算術的な意味での基数を表します。
2285 \fIn\fP はその基数における数を表します。 \fIbase#\fP が省略されると 10 進数となります。 ある桁において 9
2286 より大きい数字を表すには文字を使います。 文字を使う場合には、アルファベット小文字、大文字、@, _ をこの順番で使います。 \fIbase\fP が 36
2287 以下の場合には、大文字と小文字は区別されず、 大文字と小文字のどちらを使っても 10 から 35 までの数字を表現できます。
2288 .PP
2289 演算子は優先度の順に評価されます。括弧内にある部分式は最初に評価され、 前述の優先規則よりも優先させることができます。
2290 .SH 条件式
2291 条件式は複合コマンド \fB[[\fP と組み込みコマンドの \fBtest\fP および \fB[\fP によって使用でき、ファイルの属性を調べたり、
2292 文字列比較や算術式比較を行ったりできます。 式は以下に示す単項のプライマリや二値のプライマリから構成されます。 プライマリのいずれかの \fIfile\fP
2293 引き数が \fI/dev/fd/n\fP という形式ならば、 ファイル・ディスクリプター \fIn\fP が調べられます。 プライマリのいずれかの \fIfile\fP
2294 引き数が \fI/dev/stdin\fP、\fI/dev/stdout\fP、\fI/dev/stderr\fP のいずれかであれば、
2295 対応するファイル・ディスクリプター 0、1、2 が調べられます。
2296 .PP
2297 ほかに指定されていなければ、ファイルに対するプライマリはシンボリックリンク を辿り、リンク自身ではなくリンク先を対象とします。
2298 .if  t .sp 0.5
2299 .if  n .sp 1
2300 \fB[[\fP では \fB<\fP と \fB>\fP の演算子は現在のロケールでの辞書順で 比較します。\fBtest\fP コマンドは ASCII
2301 順で比較します。
2302 .sp 1
2303 .PD 0
2304 .TP 
2305 \fB\-a \fP\fIfile\fP
2306 \fIfile\fP が存在すれば真となります。
2307 .TP 
2308 \fB\-b \fP\fIfile\fP
2309 \fIfile\fP が存在し、かつブロック特殊ファイルならば真となります。
2310 .TP 
2311 \fB\-c \fP\fIfile\fP
2312 \fIfile\fP が存在し、かつキャラクター特殊ファイルならば真となります。
2313 .TP 
2314 \fB\-d \fP\fIfile\fP
2315 \fIfile\fP が存在し、かつディレクトリならば真となります。
2316 .TP 
2317 \fB\-e \fP\fIfile\fP
2318 \fIfile\fP が存在すれば真となります。
2319 .TP 
2320 \fB\-f \fP\fIfile\fP
2321 \fIfile\fP が存在し、かつ通常ファイルならば真となります。
2322 .TP 
2323 \fB\-g \fP\fIfile\fP
2324 \fIfile\fP が存在し、かつ set\-group\-id されていれば真となります。
2325 .TP 
2326 \fB\-h \fP\fIfile\fP
2327 \fIfile\fP が存在し、かつシンボリックリンクならば真となります。
2328 .TP 
2329 \fB\-k \fP\fIfile\fP
2330 \fIfile\fP が存在し、かつ \*(lqsticky\*(rq ビットが設定されていれば真となります。
2331 .TP 
2332 \fB\-p \fP\fIfile\fP
2333 \fIfile\fP が存在し、かつ名前付きパイプ (FIFO) ならば真となります。
2334 .TP 
2335 \fB\-r \fP\fIfile\fP
2336 \fIfile\fP が存在し、かつ読み込み可能ならば真となります。
2337 .TP 
2338 \fB\-s \fP\fIfile\fP
2339 \fIfile\fP が存在し、かつそのサイズが 0 より大きければ真となります。
2340 .TP 
2341 \fB\-t \fP\fIfd\fP
2342 ファイル・ディスクリプター \fIfd\fP がオープンされており、かつ端末を参照していれば真となります。
2343 .TP 
2344 \fB\-u \fP\fIfile\fP
2345 \fIfile\fP が存在し、 かつ set\-user\-id ビットが設定されていれば真となります。
2346 .TP 
2347 \fB\-w \fP\fIfile\fP
2348 \fIfile\fP が存在し、かつ書き込み可能ならば真となります。
2349 .TP 
2350 \fB\-x \fP\fIfile\fP
2351 \fIfile\fP が存在し、かつ実行可能ならば真となります。
2352 .TP 
2353 \fB\-G \fP\fIfile\fP
2354 \fIfile\fP が存在し、かつ (実行中のシェルの)  実効グループ ID に所有されていれば真となります。
2355 .TP 
2356 \fB\-L \fP\fIfile\fP
2357 \fIfile\fP が存在し、かつシンボリックリンクならば真となります。
2358 .TP 
2359 \fB\-N \fP\fIfile\fP
2360 \fIfile\fP が存在し、 かつ前回読み込まれた以降に修正されていれば真となります。
2361 .TP 
2362 \fB\-O \fP\fIfile\fP
2363 \fIfile\fP が存在し、かつ (実行中のシェルの)  実効ユーザ ID に所有されていれば真となります。
2364 .TP 
2365 \fB\-S \fP\fIfile\fP
2366 \fIfile\fP が存在し、かつソケットならば真となります。
2367 .TP 
2368 \fIfile1\fP \fB\-ef\fP \fIfile2\fP
2369 \fIfile1\fP と \fIfile2\fP とで デバイス番号と i\-ノード番号が同じならば真となります。
2370 .TP 
2371 \fIfile1\fP \-\fBnt\fP \fIfile2\fP
2372 \fIfile1\fP が (変更日時に関して) \fIfile2\fP より新しいか、 \fIfile1\fP が存在するが \fIfile2\fP
2373 が存在しなければ、真となります。
2374 .TP 
2375 \fIfile1\fP \-\fBot\fP \fIfile2\fP
2376 \fIfile1\fP が \fIfile2\fP より古いか、 \fIfile2\fP が存在するのに \fIfile1\fP が存在しなければ、真となります。
2377 .TP 
2378 \fB\-o \fP\fIoptname\fP
2379 シェルオプション \fIoptname\fP が有効ならば真となります。後述する組み込みコマンド \fBset\fP に対するオプションの説明中にある \fB\-o\fP
2380 オプションを参照してください。
2381 .TP 
2382 \fB\-v \fP\fIvarname\fP
2383 シェル変数 \fIvarname\fP がセットされている (値が代入されている) ならば真となります。
2384 .TP 
2385 \fB\-z \fP\fIstring\fP
2386 \fIstring\fP の長さが 0 ならば真となります。
2387 .TP 
2388 \fIstring\fP
2389 .PD 0
2390 .TP 
2391 \fB\-n \fP\fIstring\fP
2392 .PD
2393 \fIstring\fP の長さが 0 でなければ真となります。
2394 .TP 
2395 \fIstring1\fP \fB==\fP \fIstring2\fP
2396 .PD 0
2397 .TP 
2398 \fIstring1\fP \fB=\fP \fIstring2\fP
2399 .PD
2400 文字列が同じならば真となります。 POSIX に準拠する形で \fBtest\fP コマンドを使う場合には \fB=\fP を使う必要があります。
2401 .TP 
2402 \fIstring1\fP \fB!=\fP \fIstring2\fP
2403 2 つの文字列が異なれば真となります。
2404 .TP 
2405 \fIstring1\fP \fB<\fP \fIstring2\fP
2406 現在のロケールにおいて、\fIstring1\fP が \fIstring2\fP よりも 辞書順で前にある場合に真となります。
2407 .TP 
2408 \fIstring1\fP \fB>\fP \fIstring2\fP
2409 現在のロケールにおいて、\fIstring1\fP が \fIstring2\fP よりも 辞書順で後にある場合に真となります。
2410 .TP 
2411 \fIarg1 \fP\fBOP\fP\fI arg2\fP
2412 .SM
2413 \fBOP\fP は \fB\-eq\fP, \fB\-ne\fP, \fB\-lt\fP, \fB\-le\fP, \fB\-gt\fP, \fB\-ge\fP.  のいずれかです。
2414 これらの算術二値演算子が真を返すのはそれぞれ、 \fIarg1\fP が \fIarg2\fP に対して等しい場合、
2415 等しくない場合、小さい場合、小さいか等しい場合、大きい場合、 大きいか等しい場合です。 \fIarg1\fP や \fIarg2\fP
2416 には、正または負の整数を使用できます。
2417 .PD
2418 .SH 単純なコマンドの展開
2419 単純なコマンドを実行すると、シェルは以下に示す展開、代入、 リダイレクションを左から右の順で実行します。
2420 .IP 1.
2421 パーザが変数代入 (コマンド名の前にあるもの)  またはリダイレクションと判断した単語は、 保存されて後で処理されます。
2422 .IP 2.
2423 変数代入でもリダイレクションでもない単語が展開されます。 もし展開の後に残っている単語があれば、
2424 その最初の単語がコマンド名となり、残りが引き数となります。
2425 .IP 3.
2426 リダイレクションが前述の
2427 .SM
2428 \fBリダイレクト\fP で説明したように実行されます。
2429 .IP 4.
2430 変数代入の \fB=\fP の後にあるテキストに対して、チルダ展開、 パラメータ展開、コマンド置換、算術式展開、クォート削除が行われます。
2431 この処理は変数を代入する前に行われます。
2432 .PP
2433 コマンド名が残らなかった場合には、 変数を代入した結果が現在のシェル環境に効果を及ぼします。
2434 それ以外の場合、変数は実行されるコマンドの環境に追加されるだけで、 現在のシェル環境には影響を与えません。
2435 読み込み専用の変数に対して代入をしようとするとエラーが発生し、 そのコマンドは 0 でないステータスで終了します。
2436 .PP
2437 コマンド名が残らなかった場合、リダイレクションは行われますが、 現在のシェル環境は影響を受けません。 リダイレクションのエラーが起きると、 コマンドは
2438 0 でないステータスで終了します。
2439 .PP
2440 展開の後にコマンド名が残っている場合、後述するように実行が進行します。 そうでない場合はコマンドは終了します。
2441 展開のいずれかがコマンド置換である場合には、 コマンドの終了ステータスは 最後に実行されたコマンド置換の終了ステータスになります。
2442 コマンド置換が行われなかった場合には、 コマンドはステータス 0 で終了します。
2443 .SH コマンドの実行
2444 コマンドが単語に分割された後に、 単純なコマンドとそれに対する引き数リスト (引き数リストは省略可能) となった場合、以下の動作が行われます。
2445 .PP
2446 コマンド名にスラッシュが含まれない場合、 シェルはコマンドの位置を特定しようとします。 その名前のシェル関数が存在すれば、前に
2447 .SM
2448 \fB関数\fP
2449 で説明したようにその関数が呼び出されます。 名前が関数にマッチしない場合には、 シェルはシェルの組み込みコマンドのリストを探します。
2450 マッチするものがあった場合、その組み込みコマンドが呼び出されます。
2451 .PP
2452 名前がシェル関数も組み込みコマンドでなく、 かつスラッシュを含まない場合には、 \fBbash\fP は
2453 .SM
2454 \fBPATH\fP
2455 の各要素を検索し、その名前の実行ファイルを含むディレクトリを探します。 \fBbash\fP はハッシュ表を使って実行ファイルの完全なパス名を記憶します
2456 (後述の
2457 .SM
2458 \fBシェルの組み込みコマンド\fP の \fBhash\fP の項を参照)。
2459 .SM
2460 \fBPATH\fP
2461 に含まれるディレクトリの完全な探索は、 そのコマンドがハッシュ表の中にない場合にのみ行われます。 探索に失敗すると、シェルは
2462 \fBcommand_not_found_handle\fP という名前のシェル関数の定義を探します。
2463 存在する場合には、元のコマンドと元のコマンドの引き数を引き数として、 この関数を呼び出します。この関数の終了ステータスがシェルの
2464 終了ステータスとなります。 この関数が定義されていない場合には、シェルはエラーメッセージを 表示して終了ステータス 127 を返します。
2465 .PP
2466 検索に成功したか、コマンド名に 1 つ以上のスラッシュが含まれる場合には、 シェルは指定されたプログラムを独立した実行環境で実行します。 引き数 0
2467 には指定された名前が設定され、 コマンドに対する残りの引き数には (もしあれば) 指定された引き数が設定されます。
2468 .PP
2469 このファイルが実行可能フォーマットでないために実行が失敗し、 かつディレクトリでもない場合には、 このファイルは \fIシェルスクリプト(shell
2470 script)\fPであるとみなされます。 シェルスクリプトとは、シェルのコマンドが書かれているファイルのことです。
2471 シェルスクリプトを実行するためにサブシェルが呼び出されます。 このサブシェルは自分自身を再初期化し、 シェルスクリプトを処理するために
2472 新しいシェルが起動されたかのような結果になります。ただし、 親が記憶しているコマンドの位置 (後述の
2473 .SM
2474 \fBシェルの組み込みコマンド\fP
2475 における \fBhash\fP の項を参照) は子にも引き継がれます。
2476 .PP
2477 プログラムが \fB#!\fP で始まるファイルである場合、 最初の行の残りの部分はこのプログラムのインタプリタを指定します。
2478 シェルは指定されたインタプリタをオペレーティングシステム上で実行します。 オペレーティングシステムは、この実行可能フォーマットを直接処理しません。
2479 インタプリタに対する引き数は、 プログラムの先頭の行のインタプリタ名の後の省略可能な引き数 1 つと、 その後のプログラム名、さらに (もしあれば)
2480 その後のコマンドへの引き数から構成されます。
2481 .SH コマンド実行環境
2482 シェルは以下の要素からなる\fI実行環境(execution environment)\fPを持ちます:
2483 .IP \(bu
2484 起動時にそのシェルが継承したオープンされているファイル。 これは組み込みコマンド \fBexec\fP に与えられている リダイレクション機能で変更されます。
2485 .IP \(bu
2486 現在の作業ディレクトリ (current working directory)。これは \fBcd\fP, \fBpushd\fP, \fBpopd\fP で設定するか、
2487 あるいは起動時にそのシェルが継承します。
2488 .IP \(bu
2489 ファイル作成モードのマスク。 これは \fBumask\fP で設定するか、あるいはそのシェルの親から継承します。
2490 .IP \(bu
2491 \fBtrap\fP で設定された現在のトラップ。
2492 .IP \(bu
2493 シェルのパラメータ。これは変数の代入か \fBset\fP で設定されるか、 あるいはその環境内にある親シェルから継承します。
2494 .IP \(bu
2495 実行中に定義されるか、その環境内にある親シェルから継承したシェル関数。
2496 .IP \(bu
2497 起動時に有効にしたか (デフォルト値あるいはコマンドライン引き数で設定した値)、 \fBset\fP で有効にしたオプション。
2498 .IP \(bu
2499 \fBshopt\fP で有効にしたオプション。
2500 .IP \(bu
2501 \fBalias\fP で定義したシェルエイリアス。
2502 .IP \(bu
2503 各種プロセスID。これにはバックグラウンドジョブや \fB$$\fP の値、
2504 .SM
2505 \fBPPID\fP の値が含まれます。
2506 .PP
2507 組み込みコマンドやシェル関数以外の単純なコマンドを実行するとき、 このコマンドは独立した実行環境内で呼び出されます。
2508 この環境は以下の要素から成り立っています。 特に断らない限り、この値はシェルから引き継がれます。
2509 .if  n .sp 1
2510 .IP \(bu
2511 シェルのオープンしているファイルと、 コマンドに対するリダイレクションで指定した変更・追加を加えたもの。
2512 .IP \(bu
2513 現在の作業ディレクトリ
2514 .IP \(bu
2515 ファイル作成モードのマスク
2516 .IP \(bu
2517 エクスポートするシェル変数や関数と、 そのコマンドに対してエクスポートされた変数。 これらは環境で渡されます。
2518 .IP \(bu
2519 シェルに捕捉されるトラップは、 そのシェルの親から継承された値に再設定されます。 そのシェルにより無視されるトラップは無視されます。
2520 .PP
2521 この独立の環境内で呼び出されたコマンドが、 (親である) シェルの実行環境に影響を及ぼすことはできません。
2522 .PP
2523 コマンド置換や括弧でグループ化されたコマンド、非同期コマンドは、 サブシェル環境内で呼び出されます。 このサブシェル環境はシェル環境を複製したものです。
2524 ただし、シェルにより捕捉されるトラップは、 そのシェルの起動時に親から継承した値に再設定されます。
2525 パイプラインの一部として起動された組み込みコマンドは、 サブシェル環境で実行されます。サブシェル環境に対して行われた変更は、
2526 元のシェル実行環境に影響を及ぼすことはできません。
2527 .PP
2528 コマンド置換を実行するために起動されたサブシェルは、 \fB\-e\fP オプションの値を親シェルから継承します。 \fIposix\fP
2529 モードでない場合、\fBbash\fP はそのサブシェルでは \fB\-e\fP オプションをクリアします。
2530 .PP
2531 コマンドの後に \fB&\fP が付けられたときに、ジョブ制御が有効でなければ、 コマンドのデフォルトの標準入力は空ファイル \fI/dev/null\fP
2532 となります。 そうでなければ、呼び出されたコマンドは、呼び出したシェルの ファイル・ディスクリプターを、リダイレクトも含めて継承します。
2533 .SH 環境
2534 プログラムの起動時には、 \fI環境 (environment)\fP と呼ばれる文字列の配列が渡されます。 これは \fI変数名\fP\-\fI値\fP
2535 のペアからなるリストで、 \fI変数名\fP=\fI値\fP という形になります。
2536 .PP
2537 シェルは、環境を操作する様々な方法を提供しています。 起動時には、シェルは自分自身の環境を調べ、 見つかった名前それぞれに対してパラメータを生成し、
2538 それに自動的に子プロセスへの \fIエクスポート (export)\fP の印を付けます。実行されたコマンドは環境を継承します。 \fBexport\fP
2539 コマンドまたは \fBdeclare \-x\fP コマンドを用いると、 パラメータや関数の追加と削除を環境に対して行えます。
2540 環境内のパラメータの値が変更されると、 新しい値は環境の一部となり、古い値と置き換わります。 実行されたコマンドが継承する環境は、
2541 シェルの最初の環境から、 変数の値がシェル中で変更されたり、 一部のペアが \fBunset\fP コマンドで削除されたり、 \fBexport\fP コマンドや
2542 \fBdeclare \-x\fP コマンドで追加されたりしたものになります。
2543 .PP
2544 \fI単純なコマンド\fP や関数に対する環境は、一時的に修正できます。 これは、既に
2545 .SM
2546 \fBパラメータ\fP
2547 の項で説明したように、パラメータ代入を前に置くことで行います。 このような代入が影響を与えるのは、 そのコマンドが参照する環境だけです。
2548 .PP
2549 \fB\-k\fP オプションを設定 (後述の組み込みコマンド \fBset\fP を参照) すると、コマンド名の前に置いたものだけではなく、 \fI全ての\fP
2550 パラメータ代入がそのコマンドの環境に影響を与えます。
2551 .PP
2552 \fBbash\fP が外部コマンドを起動したときには、変数 \fB_\fP にはコマンドの完全なファイル名が設定され、 環境変数としてそのコマンドに渡されます。
2553 .SH 終了ステータス
2554 .PP
2555 実行したコマンドの終了ステータスは、\fIwaitpid\fP システムコールまたはそれに相当する関数が返した値です。 終了ステータスは 0 から 255
2556 の値を取りますが、後述するように、 125 より大きい値は特別にシェルによって使われることがあります。
2557 シェルの組み込みコマンドや複合コマンドの終了ステータスも、 同じ範囲に限定されています。 環境によっては、シェルは仕様で決められた失敗のモードを表す
2558 特別の値を使います。
2559 .PP
2560 シェルは、終了コード 0 で終了したコマンドは正常終了したとみなします。 終了コード 0 は成功を示します。 0 以外の終了コードは失敗を示します。
2561 あるコマンドが致命的なシグナル \fIN\fP で終了したときには、 \fBbash\fP は「128+\fIN\fP」の値を終了ステータスに使います。
2562 .PP
2563 コマンドが見つからなかった場合には、 そのコマンドを実行するために生成された子プロセスが ステータス 127 を返します。
2564 コマンドが見つかったけれど実行できなかった場合には、 ステータスは 126 です。
2565 .PP
2566 展開やリダイレクションの際にエラーが発生し コマンドが失敗した場合には、 0 より大きい終了ステータスが返されます。
2567 .PP
2568 シェルの組み込みコマンドは、 成功した場合にはステータス 0 (\fI真\fP) を返し、 実行中にエラーが起こった場合には 0 でない値 (\fI偽\fP)
2569 を返します。 組み込みコマンドは全て、正しくない使い方であることを示すのに 終了ステータス 2 を返します。
2570 .PP
2571 \fBbash\fP 自身が返す終了ステータスは、文法エラーが起きた場合を除き、 実行した最後のコマンドの終了ステータスです。 文法エラーの場合には 0
2572 でない値が終了ステータスとなります。 後述の組み込みコマンド \fBexit\fP も参照してください。
2573 .SH シグナル
2574 \fBbash\fP が対話的であり、トラップが全くないとき、\fBbash\fP は
2575 .SM
2576 \fBSIGTERM\fP を無視し (したがって \fBkill
2577 0\fP では対話シェルは kill されません)、
2578 .SM
2579 \fBSIGINT\fP を捕捉し処理します (したがって組み込みコマンド \fBwait\fP
2580 は割り込み可能です)。 どんな場合でも、\fBbash\fP は
2581 .SM
2582 \fBSIGQUIT\fP を無視します。 ジョブ制御が有効な状態ならば、
2583 \fBbash\fP は
2584 .SM
2585 \fBSIGTTIN\fP,
2586 .SM
2587 \fBSIGTTOU\fP,
2588 .SM
2589 \fBSIGTSTP\fP を無視します。
2590 .PP
2591 \fBbash\fP が起動した外部コマンドは、 シェルが自分の親から継承した値をシグナルハンドラに設定します。
2592 ジョブ制御が有効でないときには、非同期コマンドは、 継承したシグナルハンドラに加えて
2593 .SM
2594 \fBSIGINT\fP と
2595 .SM
2596 \fBSIGQUIT\fP も無視します。 コマンド置換の結果として実行されたコマンドは、 キーボードで生成されたジョブ制御シグナルを無視します。
2597 無視されるシグナルは
2598 .SM
2599 \fBSIGTTIN\fP,
2600 .SM
2601 \fBSIGTTOU\fP,
2602 .SM
2603 \fBSIGTSTP\fP です。
2604 .PP
2605 デフォルトでは、シェルは
2606 .SM
2607 \fBSIGHUP\fP を受け取ると終了します。 終了する前には、シェルは実行中・停止中の全てのジョブに対して
2608 \fBSIGHUP\fP を再送信します。停止中のジョブには
2609 .SM
2610 \fBSIGCONT\fP が送られ、このジョブが
2611 .SM
2612 \fBSIGHUP\fP
2613 を受け取るようにします。 特定のジョブに対してシェルからシグナルが送られないようにするためには、 組み込みコマンド \fBdisown\fP (後述の
2614 .SM
2615 \fBシェルの組み込みコマンド\fP を参照) を使って、そのジョブをジョブテーブルから削除するか、あるいは \fBdisown \-h\fP
2616 を使って、
2617 .SM
2618 \fBSIGHUP\fP を受け取らないようにマークを付けます。
2619 .PP
2620 シェルオプションの \fBhuponexit\fP が \fBshopt\fP を使って設定されていた場合、対話的なログインシェルが終了するときに、 \fBbash\fP
2621
2622 .SM
2623 \fBSIGHUP\fP を全てのジョブに送ります。
2624 .PP
2625 コマンドの完了を待っている間に、トラップが設定されたシグナルを \fBbash\fP が受け取ったとき、 そのトラップはコマンドが完了するまで実行されません。
2626 \fBbash\fP が組み込みコマンドの \fBwait\fP を使って非同期コマンドを待っているときに、 トラップが設定されているシグナルを受け取ると、
2627 組み込みコマンド \fBwait\fP は即座に復帰させられます。 この際の終了ステータスは 128 より大きい値になります。
2628 また復帰するのはトラップが実行された直後です。
2629 .SH ジョブ制御
2630 \fIジョブ制御 (job control)\fP とは、プロセスの実行を選択的に停止 (\fIサスペンド/suspend\fP) させ、 後で実行を再開させる
2631 (\fIリジューム/resume\fP) 機能のことです。 ユーザは通常、対話的インタフェースを通してこの機能を利用します。
2632 対話的インタフェースは、オペレーティングシステムのカーネルの端末ドライバと \fBbash\fP の組み合わせで提供されます。
2633 .PP
2634 シェルはパイプラインごとに \fIジョブ(job)\fP を構成します。シェルは現在実行中のジョブのテーブルを保存しています。 このテーブルは \fBjobs\fP
2635 コマンドを使ってリスト表示できます。 \fBbash\fP がジョブを非同期的に (\fIバックグラウンド\fP で) 起動したときには、 \fBbash\fP
2636 は以下のような行を出力します:
2637 .RS
2638 .PP
2639 [1] 25647
2640 .RE
2641 .PP
2642 これは、このジョブのジョブ番号は 1 であり、 このジョブを構成するパイプライン中の最後のプロセスの ID が 25647 であることを示しています。
2643 1 つのパイプラインに含まれる全てのプロセスは同じジョブのメンバです。 \fBbash\fP は、ジョブ制御の基礎として \fIジョブ\fP
2644 という抽象化機構を使います。
2645 .PP
2646 ジョブ制御のためのユーザインタフェースの実装を容易にするために オペレーティングシステムは \fI現在の端末プロセスのグループ ID (current
2647 terminal process group ID)\fP という情報を管理しています。 このプロセスグループのメンバ (プロセスグループ ID
2648 が現在の端末プロセスのグループ ID と等しいプロセス) は、
2649 .SM
2650 \fBSIGINT\fP
2651 のような、キーボードで生成されたシグナルを受け取ります。 このようなプロセスは \fIフォアグラウンド (foreground)\fP にあると言われます。
2652 \fIバックグラウンド (background)\fP プロセスは、 プロセスのグループ ID が端末のグループ ID と異なるプロセスです。
2653 このようなプロセスは、キーボードで生成したシグナルの影響を受けません。 フォアグラウンドプロセスだけが端末からの読み込みが許され、 \f(CWstty
2654 tostop\fP で許可されている場合には出力も許されます。 バックグラウンドプロセスが端末からの読み込み (\f(CWstty tostop\fP
2655 が有効なときには端末への書き込みも)  を行おうとすると、 このプロセスには端末ドライバから
2656 .SM
2657 \fBSIGTTIN (SIGTTOU)\fP
2658 シグナルが送られます。 このシグナルを捕捉しなければ、プロセスは停止します。
2659 .PP
2660 \fBbash\fP が動作しているオペレーティングシステムがジョブ制御をサポートしているならば、 ユーザは \fBbash\fP を使ってジョブ制御を行えます。
2661 プロセスの動作中に \fIサスペンド\fP 文字 (通常は \fB^Z\fP, Control\-Z) を打ち込むと、そのプロセスは停止させられ、 \fBbash\fP
2662 に制御が戻ります。 \fI遅延サスペンド (delayed suspend)\fP 文字 (通常は \fB^Y\fP, Control\-Y) を打ち込むと、
2663 そのプロセスは端末から入力を読み込もうとしたときに停止させられ、 制御が \fBbash\fP に戻ります。
2664 この時点でユーザはこのジョブの状態を操作できます。 利用できるのは、バックグラウンドで実行を継続するならば \fBbg\fP
2665 コマンド、フォアグラウンドで実行を継続するならば \fBfg\fP コマンド、プロセスを kill するなら \fBkill\fP コマンドです。\fB^Z\fP
2666 の効果は即座に現われるので、 未出力の出力や先行入力した文字が破棄されるという副作用があります。
2667 .PP
2668 シェル上でジョブを参照する方法はいろいろあります。 文字 \fB%\fP はジョブ名 (\fIjobspec\fP) の始まりを示します。 ジョブ番号 \fIn\fP は
2669 \fB%n\fP として参照できます。 ジョブの参照には、 ジョブを起動するときに使った名前の先頭部分や
2670 コマンドライン中に現われる部分文字列を使うこともできます。 例えば、 \fB%ce\fP は停止中のジョブ \fBce\fP を指します。
2671 先頭の部分がマッチするジョブが複数個ある場合には、 \fBbash\fP はエラーを報告します。一方、 \fB%?ce\fP を用いると、文字列 \fBce\fP
2672 をコマンドライン中に含む任意のジョブを参照できます。 部分文字列がマッチするジョブが複数個ある場合には、 \fBbash\fP はエラーを報告します。
2673 シンボル \fB%%\fP および \fB%+\fP は、シェルが覚えている \fIカレントジョブ (current job)\fP
2674 を指します。これは、フォアグラウンドで起動されているときに停止されたか、 バックグラウンドで起動された最後のジョブです。 \fI前のジョブ
2675 (previous job)\fP は \fB%\-\fP を使って参照できます。 ジョブが一つしかない場合には、\fB%+\fP と \fB%\-\fP のどちらも使っても
2676 そのジョブを参照することができます。 ジョブに関する出力 ( \fBjobs\fP コマンドの出力など) では、カレントジョブには必ず \fB+\fP
2677 というフラグが付き、前のジョブには \fB\-\fP というフラグが付きます。 ジョブ名が付いていない単独の % もカレントジョブを示します。
2678 .PP
2679 ジョブの名前だけを指定すると、 そのジョブをフォアグラウンドに持ってきます。つまり、 \fB%1\fP は \fB\*(lqfg %1\*(rq\fP と同義であり、 ジョブ
2680 1 をバックグラウンドからフォアグラウンドに持ってきます。 同様に \fB\*(lq%1 &\*(rq\fP はジョブ 1 をバックグラウンドで実行再開させます。これは
2681 \fB\*(lqbg %1\*(rq\fP と同じ意味です。
2682 .PP
2683 ジョブの状態が変わると、シェルはそれを即座に知ります。 通常、 \fBbash\fP がジョブの状態変化を報告するのは、プロンプトを出力する直前です。
2684 これは他の出力を妨害しないためです。 組み込みコマンド \fBset\fP で \fB\-b\fP オプションが指定されていると、 \fBbash\fP
2685 はジョブの状態の変化を即座に報告します。 子プロセスが終了するたびに
2686 .SM
2687 \fBSIGCHLD\fP のトラップが実行されます。
2688 .PP
2689 ジョブを停止させたままで (\fBcheckjobs\fP シェルオプションが 組み込みコマンド \fBshopt\fP により有効になっているときには実行中でも)
2690 \fBbash\fP を終了 (exit) させようとすると、シェルは警告メッセージを出力します。 \fBcheckjobs\fP
2691 オプションが有効のときには、ジョブとその状態を一覧表示します。 このようなときには、 \fBjobs\fP コマンドを使ってジョブの状態を調べられます。
2692 間にコマンドを挟まずに \fBbash\fP を再び終了させようとすると、 シェルは警告を繰り返さないで、 停止中のジョブを終了させます。
2693 .SH プロンプト
2694 対話的に動作している場合、 \fBbash\fP はコマンドを読む込み準備ができたときにプライマリプロンプト
2695 .SM
2696 \fBPS1\fP
2697 を表示し、コマンドを完成させるためにまだ入力が必要なときに セカンダリプロンプト
2698 .SM
2699 \fBPS2\fP を表示します。 \fBbash\fP
2700 ではこれらのプロンプト文字列をカスタマイズできます。 この際にはバックスラッシュでエスケープされた 各種特殊文字を挿入でき、
2701 これは以下のようにデコードされます:
2702 .RS
2703 .PD 0
2704 .TP 
2705 \fB\ea\fP
2706 ASCII のベル文字 (07)
2707 .TP 
2708 \fB\ed\fP
2709 "曜日 月 日" という形式の日付 (例: "Tue May 26")
2710 .TP 
2711 \fB\eD{\fP\fIformat\fP\fB}\fP
2712 \fIformat\fP が \fIstrftime\fP(3) に渡され、 その結果がプロンプト文字列に挿入されます。 \fIformat\fP が空の場合には
2713 (ブレースは必要)、 ロケールで指定された時刻表記になります。
2714 .TP 
2715 \fB\ee\fP
2716 ASCII のエスケープ文字 (033)
2717 .TP 
2718 \fB\eh\fP
2719 ホスト名のうち最初の `.' までの部分
2720 .TP 
2721 \fB\eH\fP
2722 ホスト名
2723 .TP 
2724 \fB\ej\fP
2725 シェルによって現在管理されているジョブの数
2726 .TP 
2727 \fB\el\fP
2728 シェルの端末デバイスのベース名 (basename)
2729 .TP 
2730 \fB\en\fP
2731 改行 (newline)
2732 .TP 
2733 \fB\er\fP
2734 復帰 (carriage return)
2735 .TP 
2736 \fB\es\fP
2737 シェルの名前。つまり \fB$0\fP のベース名 (最後のスラッシュ以降の部分)
2738 .TP 
2739 \fB\et\fP
2740 24 時間制の HH:MM:SS 形式の現在の時刻
2741 .TP 
2742 \fB\eT\fP
2743 12 時間制の HH:MM:SS 形式の現在の時刻
2744 .TP 
2745 \fB\e@\fP
2746 12 時間制の am/pm 形式の現在の時刻
2747 .TP 
2748 \fB\eA\fP
2749 12 時間制の HH:MM 形式の現在の時刻
2750 .TP 
2751 \fB\eu\fP
2752 現在のユーザのユーザ名
2753 .TP 
2754 \fB\ev\fP
2755 \fBbash\fP のバージョン (例: 2.00)
2756 .TP 
2757 \fB\eV\fP
2758 \fBbash\fP のリリース。バージョンにパッチレベルを加えたもの (例 : 2.00.0)
2759 .TP 
2760 \fB\ew\fP
2761 現在の作業ディレクトリ。
2762 .SM
2763 \fB$HOME\fP の部分はチルダに短縮されます。
2764 .SM
2765 \fBPROMPT_DIRTRIM\fP
2766 の値が適用されます。
2767 .TP 
2768 \fB\eW\fP
2769 現在の作業ディレクトリのベース名
2770 .SM
2771 \fB$HOME\fP の部分はチルダに短縮されます。
2772 .TP 
2773 \fB\e!\fP
2774 このコマンドの履歴番号
2775 .TP 
2776 \fB\e#\fP
2777 このコマンドのコマンド番号
2778 .TP 
2779 \fB\e$\fP
2780 実効 UID が 0 の場合に \fB#\fP、 それ以外の場合は \fB$\fP
2781 .TP 
2782 \fB\e\fP\fInnn\fP
2783 8進数 \fInnn\fP に対応する文字
2784 .TP 
2785 \fB\e\e\fP
2786 バックスラッシュ
2787 .TP 
2788 \fB\e[\fP
2789 非表示文字のシーケンスの開始。 これを使うと、プロンプト中に端末の制御シーケンスを埋め込むことができます。
2790 .TP 
2791 \fB\e]\fP
2792 非表示文字のシーケンスを終了します。
2793 .PD
2794 .RE
2795 .PP
2796 コマンド番号と履歴番号は異なるのが普通です: コマンドの履歴番号とは履歴リスト内での位置です。 履歴リストは履歴ファイルから読み込めます (後述の
2797 .SM
2798 \fB履歴\fP を参照)。 一方、コマンド番号は、 現在のシェルのセッション中に実行された一連のコマンドの列における位置です。
2799 この文字列がデコードされた後、さらにパラメータ展開、コマンド置換、 算術式展開、クォート削除が適用されます。展開はシェルオプション
2800 \fBpromptvars\fP (後述の
2801 .SM
2802 \fBシェルの組み込みコマンド\fP の項にある \fBshopt\fP コマンドの説明を参照)
2803 の値に基づいて行われます。
2804 .SH "READLINE ライブラリ"
2805 readline は対話シェルを使うときに入力の読み込みを処理するライブラリです。 ただし、シェルの起動時に \fB\-\-noediting\fP
2806 オプションが指定された場合には使われません。 行編集は組み込みコマンド \fBread\fP に \fB\-e\fP オプションを 指定したときにも使われます。
2807 デフォルトでは、行編集に使うコマンドは emacs のコマンドに似ています。 vi 形式の行編集インタフェースも使えます。 行編集は、組み込みコマンド
2808 \fBset\fP (後述の
2809 .SM
2810 \fBシェルの組み込みコマンド\fP を参照) に \fB\-o emacs\fP や \fB\-o vi\fP
2811 オプションを指定することで、いつでも有効にできます。 シェルを起動した後に行編集機能を無効にするには、組み込みコマンド \fBset\fP に対して \fB+o
2812 emacs\fP オプションまたは \fB+o vi\fP オプションを設定してください。
2813 .SS "Readline の記法"
2814 .PP
2815 このセクションでは、emacs 形式の記法を使ってキーストロークを表します。 コントロールキーは C\-\fIkey\fP で表します (例: C\-n は
2816 Control\-N の意味です)。同様に \fIメタ\fP キーは M\-\fIkey\fP で表すので、M\-x は Meta\-X を表すことになります。
2817 (\fIメタ\fP キーがないキーボードでは、M\-\fIx\fP は ESC \fIx\fP を表します。つまり、 エスケープキーを押した後に \fIx\fP
2818 キーを押します。これは ESC を \fIメタプレフィックス (meta prefix)\fP にする操作です。 M\-C\-\fIx\fP
2819 の組み合わせは、ESC\-Control\-\fIx\fP つまり、エスケープキーを押した後に、コントロールキーを押したまま \fIx\fP を押すことを意味します。)
2820 .PP
2821 Readline のコマンドには数値の \fI引き数\fP を指定できます。通常これは繰り返しの回数として作用します。
2822 ただし、場合によっては、引き数の符号が意味を持つこともあります。 順方向に作用するコマンド (例: \fBkill\-line\fP) に負の引き数を渡すと、
2823 コマンドは逆方向に作用します。 引き数を指定した場合の動作がこの説明と異なるコマンドについては後で説明します。
2824 .PP
2825 コマンドがテキストを\fIキル (kill)\fP すると説明されているときは、 削除されたテキストは、 後で取り出せる (\fIヤンク (yank)\fP
2826 できる) ように保存されます。 キルされたテキストは、\fIキルリング (kill ring)\fP に保存されます。 連続してキルを行うと、テキストは 1
2827 つのまとまりとして保存されるので、 全部を一度にヤンクできます。テキストをキルしないコマンドが挟まると、 キルリング上のテキストが分離されます。
2828 .SS "Readline の初期化"
2829 .PP
2830 readline をカスタマイズするには、 コマンドを初期化ファイル (\fIinputrc\fP ファイル) に追加します。 このファイルの名前は、変数
2831 .SM
2832 \fBINPUTRC\fP の値から決まります。 この変数が設定されていない場合のデフォルト値は \fI~/.inputrc\fP です。
2833 readline ライブラリを使うプログラムが起動する際には、 この初期化ファイルが読み込まれ、キー割り当てと変数が設定されます。 readline
2834 の初期化ファイル中で使用できる基本的構文は、 以下のように少ししかありません。 空行は無視されます。 \fB#\fP で始まる行はコメントです。 \fB$\fP
2835 で始まる行は条件文です。 それ以外の行はキー割り当てと変数の設定です。
2836 .PP
2837 デフォルトのキー割り当ては \fIinputrc\fP ファイルで変更できます。 このライブラリを使う他のプログラムからも、
2838 独自のコマンドとキー割り当てを追加できます。
2839 .PP
2840 例えば、
2841 .RS
2842 .PP
2843 M\-Control\-u: universal\-argument
2844 .RE
2845 または
2846 .RS
2847 C\-Meta\-u: universal\-argument
2848 .RE
2849 を \fIinputrc\fP ファイルに書くと、M\-C\-u で readline の \fIuniversal\-argument\fP
2850 コマンドが実行されるようになります。
2851 .PP
2852 以下に示すシンボル名を使うことができます: \fIRUBOUT\fP, \fIDEL\fP, \fIESC\fP, \fILFD\fP, \fINEWLINE\fP, \fIRET\fP,
2853 \fIRETURN\fP, \fISPC\fP, \fISPACE\fP, \fITAB\fP。
2854 .PP
2855 readline では、キーにはコマンド名だけでなく文字列を割り当てることもでき、 その場合には、そのキーが押されると割り当てられた文字列が挿入されます
2856 (\fIマクロ\fP)。
2857 .SS "Readline のキー割り当て"
2858 .PP
2859 \fIinputrc\fP ファイルにおける制御キーの割り当て方は単純です。 必要なものは、コマンド名あるいはマクロの文字列と、
2860 これらが割り当てられるキーシーケンスだけです。 名前は 2 通りの方法で指定できます。 つまり、シンボリックなキーの名前 (たいていは、\fIMeta\-\fP
2861 や \fIControl\-\fP プレフィックスと組み合わせて使われる) による指定と、 キーシーケンスによる指定です。
2862 .PP
2863 「\fBkeyname\fP:\^\fIfunction\-name\fP」あるいは 「\fBkeyname\fP:\^\fImacro\fP」の形式を使うときには、
2864 \fIkeyname\fP は英語で書き下したキーの名前となります。例を以下に示します:
2865 .sp
2866 .RS
2867 Control\-u: universal\-argument
2868 .br
2869 Meta\-Rubout: backward\-kill\-word
2870 .br
2871 Control\-o: "> output"
2872 .RE
2873 .LP
2874 この例では、 \fIC\-u\fP が \fBuniversal\-argument\fP に、 \fIM\-DEL\fP が \fBbackward\-kill\-word\fP
2875 に割り当てられます。 また、 \fIC\-o\fP はマクロの実行に割り当てられ、右辺値に展開されます (つまり、テキスト
2876 .if  t \f(CW> output\fP
2877 .if  n ``> output''
2878 が編集行に挿入されます)。
2879 .PP
2880 後者の形式である「\fB"keyseq"\fP:\^\fIfunction\-name\fP」または 「\fB"keyseq"\fP:\^\fImacro\fP」においては、
2881 \fBkeyseq\fP は先程の \fBkeyname\fP とは異なり、 ダブルクォートで括ってキーシーケンス全体を示す文字列を表記しています。
2882 以下の例で示すように、GNU Emacs 形式のキーエスケープの一部を使えます。 ただしシンボリックな文字名は認識されません。
2883 .sp
2884 .RS
2885 "\eC\-u": universal\-argument
2886 .br
2887 "\eC\-x\eC\-r": re\-read\-init\-file
2888 .br
2889 "\ee[11~": "Function Key 1"
2890 .RE
2891 .PP
2892 この例でも、 \fIC\-u\fP が \fBuniversal\-argument\fP 機能に割り当てられています。 \fIC\-x C\-r\fP は
2893 \fBre\-read\-init\-file\fP 機能に割り当てられ、 \fIESC [ 1 1 ~\fP は
2894 .if  t \f(CWFunction Key 1\fP という文字列の挿入に割り当てられています。
2895 .if  n ``Function Key 1'' という文字列の挿入に割り当てられています。
2896 .PP
2897 GNU Emacs 形式のエスケープシーケンスを以下に全て示します:
2898 .RS
2899 .PD 0
2900 .TP 
2901 \fB\eC\-\fP
2902 コントロールプレフィックス
2903 .TP 
2904 \fB\eM\-\fP
2905 メタプレフィックス
2906 .TP 
2907 \fB\ee\fP
2908 エスケープ文字
2909 .TP 
2910 \fB\e\e\fP
2911 バックスラッシュ
2912 .TP 
2913 \fB\e"\fP
2914 " という文字
2915 .TP 
2916 \fB\e\(aq\fP
2917 \(aq という文字
2918 .RE
2919 .PD
2920 .PP
2921 GNU Emacs 形式のエスケープシーケンスに加えて、 別形式のバックスラッシュエスケープも使えます:
2922 .RS
2923 .PD 0
2924 .TP 
2925 \fB\ea\fP
2926 警告 (ベル)
2927 .TP 
2928 \fB\eb\fP
2929 バックスペース
2930 .TP 
2931 \fB\ed\fP
2932 削除 (delete)
2933 .TP 
2934 \fB\ef\fP
2935 フォームフィード
2936 .TP 
2937 \fB\en\fP
2938 改行 (newline)
2939 .TP 
2940 \fB\er\fP
2941 復帰 (carriage return)
2942 .TP 
2943 \fB\et\fP
2944 水平タブ
2945 .TP 
2946 \fB\ev\fP
2947 垂直タブ
2948 .TP 
2949 \fB\e\fP\fInnn\fP
2950 8 進値が \fInnn\fP である 8 ビット文字 (1 文字につき数字 1〜3 桁)
2951 .TP 
2952 \fB\ex\fP\fIHH\fP
2953 16 進値が \fIHH\fP である 8 ビット文字 (16 進で 1〜2 桁)。
2954 .RE
2955 .PD
2956 .PP
2957 マクロのテキストを入力する際には、マクロ定義を示すために シングルクォートやダブルクォートを使わなければなりません。
2958 クォートされていないテキストは関数名とみなされます。 マクロ本体では、前述のバックスラッシュによるエスケープは展開されます。
2959 バックスラッシュはマクロのテキスト内の他の文字を全てエスケープします。 これには " や \(aq も含まれます。
2960 .PP
2961 \fBbash\fP では、組み込みコマンドの \fBbind\fP を使って、readline の現在の キー割り当ての表示と変更を行えます。
2962 また、組み込みコマンド \fBset\fP に対して \fB\-o\fP オプションを使えば、編集モードを対話的利用の途中に切り替え可能です (後述の
2963 .SM
2964 \fBシェルの組み込みコマンド\fP を参照)。
2965 .SS "Readline の変数"
2966 .PP
2967 Readline には、動作を細かくカスタマイズするために変数があります。 変数は \fIinputrc\fP ファイル中に
2968 .RS
2969 .PP
2970 \fBset\fP \fIvariable\-name\fP \fIvalue\fP
2971 .RE
2972 .PP
2973 という形式の文で設定できます。 特に断らない限り、readline の変数がとる値は \fBOn\fP か \fBOff\fP
2974 のいずれかです。大文字と小文字の違いは考慮しません。 認識できない変数名は無視されます。
2975 変数の値を読み取るとき、設定されてない場合や、空文字列、"on" (大文字と小文字は区別しない)、"1" は \fBOn\fP とみなされます。それ以外の値は
2976 \fBOff\fP とみなされます。 変数とそのデフォルト値を以下に示します:
2977 .PP
2978 .PD 0
2979 .TP 
2980 \fBbell\-style (audible)\fP
2981 readline が端末のベルを鳴らそうとしたときの動作を制御します。 \fBnone\fP が設定されている場合は、readline はベルを鳴らしません。
2982 \fBvisible\fP が設定されている場合には、可能であれば可視ベル (visible bell) が用いられます。\fBaudible\fP
2983 が設定されている場合には、 readline は端末のベルを鳴らそうとします。
2984 .TP 
2985 \fBbind\-tty\-special\-chars (On)\fP
2986 \fBOn\fP が設定されていると、 カーネルの端末ドライバによって特別扱いされるコントロール文字の機能の代わりに readline
2987 の同等の機能を割り当てようとします。
2988 .TP 
2989 \fBcomment\-begin (\*(lq#\*(rq)\fP
2990 readline の \fBinsert\-comment\fP コマンドが実行されたときに挿入される文字列です。 このコマンドは emacs モードでは
2991 \fBM\-#\fP に割り当てられ、vi コマンドモードでは \fB#\fP に割り当てられます。
2992 .TP 
2993 \fBcompletion\-ignore\-case (Off)\fP
2994 \fBOn\fP が設定されていると、 readline がファイル名のマッチングと補完を行う際に 大文字と小文字が区別されません。
2995 .TP 
2996 \fBcompletion\-prefix\-display\-length (0)\fP
2997 補完候補のリストでそのまま表示される共通先頭部分の文字数。 0 より大きい値が設定されると、補完候補を表示するときに、
2998 この値より長い共通先頭部分は省略記号で置き換えられます
2999 .TP 
3000 \fBcompletion\-query\-items (100)\fP
3001 \fBpossible\-completions\fP コマンドが生成した補完候補の数が、 いくつを越えると表示の可否をユーザに問い合わせるのかを決めます。
3002 この変数には 0 以上の任意の整数を設定できます。 補完の候補数がこの変数の値以上の場合には、
3003 ユーザに対して候補を表示するかどうかの問い合わせがなされます。 そうでない場合には、単に端末に補完の候補がリスト表示されます。
3004 .TP 
3005 \fBconvert\-meta (On)\fP
3006 \fBOn\fP を設定すると、readline は 8 番目のビットがセットされている文字を ASCII のキーシーケンスに変換します。 変換は、8
3007 番目のビットを落として、 エスケープ文字を前に追加することによって行います (実際にはエスケープ文字を\fIメタプレフィックス\fPとして用います)。
3008 .TP 
3009 \fBdisable\-completion (Off)\fP
3010 \fBOn\fP を設定すると、readline は単語の補完を行わなくなります。 補完される文字の編集行への挿入は、 その文字を
3011 \fBself\-insert\fP に割り当てたかのように行われます。
3012 .TP 
3013 \fBediting\-mode (emacs)\fP
3014 readline の起動時に \fIemacs\fP と \fIvi\fP のどちらに似たキー割り当てを使うのかを制御します。 \fBediting\-mode\fP には
3015 \fBemacs\fP と \fBvi\fP のいずれかを指定できます。
3016 .TP 
3017 \fBecho\-control\-characters (On)\fP
3018 \fBOn\fP が設定されていると、サポートしている OS では、 キーボード操作でシグナルが起こされたときに相当する文字を画面に出力します。
3019 .TP 
3020 \fBenable\-keypad (Off)\fP
3021 \fBOn\fP を設定すると、 readline は呼び出されたときにアプリケーションキーパッドを有効にしようとします。
3022 一部のシステムでは、矢印キーを使うためにこれを有効にする必要があります。
3023 .TP 
3024 \fBenable\-meta\-key (On)\fP
3025 \fBOn\fP が設定されていると、 readline は端末がサポートを要求するメタ修飾キーを有効にしようとします。 多くの端末では、メタキーは 8
3026 ビット文字を送信するのに使われます。
3027 .TP 
3028 \fBexpand\-tilde (Off)\fP
3029 \fBOn\fP を設定すると、 readline が単語の補完を試みるときにチルダ展開が行われます。
3030 .TP 
3031 \fBhistory\-preserve\-point (Off)\fP
3032 \fBOn\fP が設定されていると、 \fBprevious\-history\fP や \fBnext\-history\fP で履歴行を取り出したときに、
3033 ポイントを行内の同じ位置に置こうとします。
3034 .TP 
3035 \fBhistory\-size (0)\fP
3036 履歴リストに保存する履歴エントリの最大数を設定する。 0 が設定されていると、履歴リストのエントリの数は制限されません。
3037 .TP 
3038 \fBhorizontal\-scroll\-mode (Off)\fP
3039 \fBOn\fP が設定されていると、readline は表示の際に 1 行しか 使わないようになります。つまり、行がスクリーンの幅より長くなると、
3040 新しい行に折り返すのではなく、1 つの入力行の中で横にスクロールします。
3041 .TP 
3042 \fBinput\-meta (Off)\fP
3043 \fBOn\fP が設定されていると、readline は 8 ビットの入力が可能になりま
3044 す(つまり、読み込んだ文字の再上位ビットを落としません)。この動作は、端 末のサポートとは無関係に行われます。 \fBmeta\-flag\fP
3045 という名前は、この変数の別名です。
3046 .TP 
3047 \fBisearch\-terminators (\*(lqC\-[C\-J\*(rq)\fP
3048 インクリメンタル検索を終了させる文字からなる文字列です (終了後にその文字がコマンドとして実行されることもありません)。
3049 この変数に値が設定されていなければ、 \fIESC\fP と \fIC\-J\fP でインクリメンタル検索が終わります。
3050 .TP 
3051 \fBkeymap (emacs)\fP
3052 現在の readline のキーマップを設定します。 有効なキーマップ名は、 \fIemacs, emacs\-standard, emacs\-meta,
3053 emacs\-ctlx, vi, vi\-command\fP, .IR vi\-insert です。\fIvi\fP は \fIvi\-command\fP
3054 と等価で、\fIemacs\fP は \fIemacs\-standard\fP と等価です。 デフォルト値は \fIemacs\fP です。
3055 \fBediting\-mode\fP の値もデフォルトキーマップに影響を与えます。
3056 .TP 
3057 \fBmark\-directories (On)\fP
3058 \fBOn\fP が設定されていると、 補完されたディレクトリ名の末尾にスラッシュが追加されます。
3059 .TP 
3060 \fBmark\-modified\-lines (Off)\fP
3061 \fBOn\fP が設定されていると、履歴行を表示する際に、 以前に変更されたものの先頭にアスタリスク (\fB*\fP) を付けて表示します。
3062 .TP 
3063 \fBmark\-symlinked\-directories (Off)\fP
3064 \fBOn\fP が設定されていると、 ディレクトリへのシンボリックリンクが補完されたときに、 (\fBmark\-directories\fP が有効であれば)
3065 名前の末尾にスラッシュが追加されます。
3066 .TP 
3067 \fBmatch\-hidden\-files (On)\fP
3068 \fBOn\fP が設定されていると、 ファイル名の補完で `.' で始まる名前のファイル (隠しファイル) にもマッチします。 \fBOff\fP
3069 が設定されているときには、`.' で始まる名前のファイルを 補完するには先頭の `.' をユーザが入力する必要があります。
3070 .TP 
3071 \fBmenu\-complete\-display\-prefix (Off)\fP
3072 \fBOn\fP が設定されていると、 メニュー補完 (menu completion) で補完候補のリスト (空の場合も含む)
3073 を順番に表示する前に、共通先頭部分を表示します。
3074 .TP 
3075 \fBoutput\-meta (Off)\fP
3076 \fBOn\fP が設定されていると、 readline は 8 番目のビットが立っている文字を直接表示します。
3077 メタ文字を前置したエスケープシーケンスでの表示は行いません。
3078 .TP 
3079 \fBpage\-completions (On)\fP
3080 \fBOn\fP が設定されていると、 一度に一画面分の補完候補を表示するために readline は組み込みの \fImore\fP 風ページャを使います。
3081 .TP 
3082 \fBprint\-completions\-horizontally (Off)\fP
3083 \fBOn\fP が設定されていると、 readline は補完でマッチするものをアルファベット順にして、 縦方向ではなく横方向に並べて表示します。
3084 .TP  
3085 \fBrevert\-all\-at\-newline (Off)\fP
3086 \fBOn\fP が設定されていると、 \fBaccept\-line\fP が実行されて readline から戻るときに、
3087 履歴に加えられた全ての変更を元に戻します。 デフォルトでは、\fBreadline\fP の各呼び出しを通じて
3088 履歴行が変更され単一のアンドゥリストが保持されます。
3089 .TP 
3090 \fBshow\-all\-if\-ambiguous (Off)\fP
3091 これは補完機能のデフォルトの挙動を変えます。 \fBOn\fP が設定されている場合、単語に対する補完候補が複数個あると、
3092 ベルは鳴らされずに、マッチするものが即座にリスト表示されます。
3093 .TP 
3094 \fBshow\-all\-if\-unmodified (Off)\fP
3095 これは \fBshow\-all\-if\-ambiguous\fP と同様に 補完機能のデフォルトの挙動を変えます。 \fBOn\fP
3096 が設定されている場合、単語に対する補完候補が複数個あって、 部分的な補完ができない (補完候補が共通先頭部分を持たない) と、
3097 マッチするものが即座にリスト表示されます。 ベルは鳴らされません。
3098 .TP 
3099 \fBskip\-completed\-text (Off)\fP
3100 \fBOn\fP が設定されていると、 これは補完機能がマッチしたものを行に挿入するときのデフォルトの挙動を変えます。
3101 単語の途中で補完を実行したときにだけ意味があります。 有効になっていると、readline は、単語のカーソル以後の部分が重複しないように、
3102 補完された単語のうちポイント以後の文字を挿入しません。
3103 .TP 
3104 \fBvisible\-stats (Off)\fP
3105 \fBOn\fP が設定されていると、 \fIstat\fP(2) で得られるファイルの種類を表す文字が、 補完候補のリスト表示の際に追加されます。
3106 .PD
3107 .SS "Readline の条件構文"
3108 .PP
3109 Readline には、 C 言語のプリプロセッサの条件付きコンパイル機能と 似たコンセプトに基づく機能が実装されています。
3110 これを使うと、条件に応じてキー割り当てや変数の設定を実行できます。 パーザディレクティブは 4 つあります。
3111 .IP \fB$if\fP
3112 \fB$if\fP 構文を使うと、編集モードや使用中の端末、 readline を使っているアプリケーションに応じた割り当てを行えます。
3113 行末までの全テキストが評価対象となります。 これを分離するには文字は必要ありません。
3114 .RS
3115 .IP \fBmode\fP
3116 \fB$if\fP ディレクティブの \fBmode=\fP 形式は、 readline が emacs モードか vi
3117 モードのどちらになっているかを調べるために使います。 例えば、これを \fBset keymap\fP コマンドと一緒に使い、 readline が
3118 emacs モードで始まったときだけ キーの割り当てを \fIemacs\-standard\fP や \fIemacs\-ctlx\fP キーマップに設定できます。
3119 .IP \fBterm\fP
3120 \fBterm=\fP 形式を使うと、 端末固有のキー割り当てを入れることができます。 これは端末のファンクションキーが出力する
3121 キーシーケンスを割り当てる場合などに使えます。 \fB=\fP の右辺の単語の評価は、 端末の完全な名前および最初の \fB\-\fP
3122 の前までの部分的な名前の両方に対して行われます。 例えば、 \fIsun\fP は \fIsun\fP と \fIsun\-cmd\fP の両方にマッチします。
3123 .IP \fBapplication\fP
3124 \fBapplication\fP はアプリケーション固有の設定を入れるために使います。 readline ライブラリを使っているプログラムはそれぞれ
3125 \fIアプリケーション名 (application name)\fP を設定するので、 初期化ファイルはそれが特定の値かどうかを調べられます。
3126 これを使って、特定のプログラム用で便利な機能に キーシーケンスを割り当てできます。例えば、以下のコマンドは、 \fBbash\fP
3127 の場合に、現在の単語または直前の単語をクォートする キーシーケンスを追加します。
3128 .sp 1
3129 .RS
3130 .nf
3131 \fB$if\fP Bash
3132 # Quote the current or previous word
3133 "\eC\-xq": "\eeb\e"\eef\e""
3134 \fB$endif\fP
3135 .fi
3136 .RE
3137 .RE
3138 .IP \fB$endif\fP
3139 このコマンドは \fB$if\fP コマンドを終了させます (上記の例の通り)。
3140 .IP \fB$else\fP
3141 \fB$if\fP ディレクティブのこの分岐内に書かれたコマンドは、 評価が失敗したときに実行されます。
3142 .IP \fB$include\fP
3143 このディレクティブはファイル名 1 つを引き数に取り、 そのファイルからコマンドとキー割り当てを読み込みます。 例えば以下のディレクティブを使うと
3144 \fI/etc/inputrc\fP が読み込まれます:
3145 .sp 1
3146 .RS
3147 .nf
3148 \fB$include\fP \^ \fI/etc/inputrc\fP
3149 .fi
3150 .RE
3151 .SS 検索
3152 .PP
3153 readline には、指定した文字列を含む行をコマンド履歴内から探すコマンド が用意されています (後述の
3154 .SM
3155 \fB履歴\fP を参照)。
3156 検索のモードには、 \fIインクリメンタル (incremental)\fP モードと \fI非インクリメンタル (non\-incremental)\fP モードの
3157 2 つがあります。
3158 .PP
3159 インクリメンタル検索では、 ユーザが検索文字列全体の入力が終わるより前に検索が開始されます。 検索文字列に文字が追加されるたびに、 readline
3160 はそれまでに入力した文字列にマッチする履歴から 次のエントリを表示します。 インクリメンタル検索では、探している履歴エントリを見つけるために
3161 必要な数の文字を入力すれば十分です。 \fBisearch\-terminators\fP の値に含まれる文字を入力すると、 インクリメンタル検索は終了します。
3162 この変数に値が代入されていない場合には、エスケープ文字または Control\-J でインクリメンタル検索が終了します。 Control\-G
3163 はインクリメンタル検索を異常終了させ、元の行を復元します。 検索が終了すると、検索文字列を含む履歴エントリが現在の行になります。
3164 .PP
3165 マッチした他の履歴リストのエントリを見つけるには、Control\-S または Control\-R を適宜入力します。これにより、
3166 今まで入力した検索文字列にマッチする次のエントリを 履歴の前方または後方に向かって探します。 readline
3167 に割り当てられた他のキーシーケンスを入力すると検索が終わり、 入力したキーシーケンスに対応するコマンドが実行されます。
3168 例えば、\fI改行\fPは検索を終了させて、その行を入力します。 これにより、履歴リスト中のコマンドが実行されます。
3169 .PP
3170 readline は前回のインクリメンタル検索で入力された 検索文字列を覚えています。 新しい検索文字を間に挟まずに Control\-R を 2
3171 回入力すると、 覚えている検索文字列が使われます。
3172 .PP
3173 インクリメンタルでない検索の場合には、検索文字列全体を読み込んでから、 履歴行にマッチするものの検索を始めます。
3174 検索文字列には、ユーザが入力したものか、現在の行の内容の一部が使えます。
3175 .SS "Readline のコマンド名"
3176 .PP
3177 以下は、 コマンドの名前およびそれらが割り当てられている デフォルトのキーシーケンスの一覧です。 対応するキーシーケンスがないコマンド名には、
3178 デフォルトではキーは割り当てられていません。 以下の説明では、\fIポイント (point)\fP は現在のカーソルの位置を表し、 \fIマーク (mark)\fP
3179 は \fBset\-mark\fP コマンドによって保存されたカーソル位置を表します。 ポイントとマークの間のテキストは、\fIリージョン (region)\fP
3180 と呼びます。
3181 .SS 移動コマンド
3182 .PP
3183 .PD 0
3184 .TP 
3185 \fBbeginning\-of\-line (C\-a)\fP
3186 現在の行の先頭に移動します。
3187 .TP 
3188 \fBend\-of\-line (C\-e)\fP
3189 行の末尾に移動します。
3190 .TP 
3191 \fBforward\-char (C\-f)\fP
3192 1 文字進みます。
3193 .TP 
3194 \fBbackward\-char (C\-b)\fP
3195 1 文字戻ります。
3196 .TP 
3197 \fBforward\-word (M\-f)\fP
3198 次の単語の最後に進みます。単語は英数字 (英字と数字) からなります。
3199 .TP 
3200 \fBbackward\-word (M\-b)\fP
3201 現在あるいは直前の単語の先頭に戻ります。 単語は英数字 (英字と数字) からなります。
3202 .TP 
3203 \fBshell\-forward\-word\fP
3204 次の単語の最後に進みます。 単語はクォートされていないシェルのメタ文字で区切られます。
3205 .TP 
3206 \fBshell\-backward\-word\fP
3207 現在の単語あるいは前の単語の先頭に戻ります。 単語はクォートされていないシェルのメタ文字で区切られます。
3208 .TP 
3209 \fBclear\-screen (C\-l)\fP
3210 現在の行を画面の一番上の行に残したまま、画面をクリアします。 引き数を付けると、画面をクリアせずに現在の行を再描画します。
3211 .TP 
3212 \fBredraw\-current\-line\fP
3213 現在の行を再描画します。
3214 .PD
3215 .SS 履歴操作のためのコマンド
3216 .PP
3217 .PD 0
3218 .TP 
3219 \fBaccept\-line (Newline, Return)\fP
3220 カーソルの位置に関わらず、行を確定します。この行が空でなければ、変数
3221 .SM
3222 \fBHISTCONTROL\fP
3223 の状態に従って、これが履歴リストに追加されます。 行が履歴リストを変更したものならば、履歴行は元の状態に戻されます。
3224 .TP 
3225 \fBprevious\-history (C\-p)\fP
3226 履歴リストを戻り、履歴リストから前の行を取り出します。
3227 .TP 
3228 \fBnext\-history (C\-n)\fP
3229 履歴リストを進み、履歴リストから次の行を取り出します。
3230 .TP 
3231 \fBbeginning\-of\-history (M\-<)\fP
3232 履歴の最初の行に移動します。
3233 .TP 
3234 \fBend\-of\-history (M\->)\fP
3235 入力履歴の最後に移動します。つまり、現在入力中の行に移動します。
3236 .TP 
3237 \fBreverse\-search\-history (C\-r)\fP
3238 現在の行を開始点にして後方に向かって検索を行い、 必要に応じて履歴を「遡って」いきます。これはインクリメンタル検索です。
3239 .TP 
3240 \fBforward\-search\-history (C\-s)\fP
3241 現在の行を開始点にして前方に向かって検索を行い、 必要に応じて履歴を「下って」いきます。これはインクリメンタル検索です。
3242 .TP 
3243 \fBnon\-incremental\-reverse\-search\-history (M\-p)\fP
3244 現在の行を開始点にして、履歴リストを後方に向かって検索を行います。 ユーザが入力した文字列を非インクリメンタルモードで検索します。
3245 .TP 
3246 \fBnon\-incremental\-forward\-search\-history (M\-n)\fP
3247 現在の行を開始点にして、履歴リストを前方に向かって検索を行います。 ユーザが入力した文字列を非インクリメンタルモードで検索します。
3248 .TP 
3249 \fBhistory\-search\-forward\fP
3250 履歴を前方に向かって検索し、 現在の行の先頭とポイントの間の文字列を探します。 これは非インクリメンタル検索です。
3251 .TP 
3252 \fBhistory\-search\-backward\fP
3253 履歴を後方に向かって検索し、 現在の行の先頭およびポイントの間の文字列を探します。 これは非インクリメンタル検索です。
3254 .TP 
3255 \fByank\-nth\-arg (M\-C\-y)\fP
3256 前のコマンドに対する最初の引き数 (通常は前の行の 2 番目の単語)  をポイントに挿入します。引き数 \fIn\fP が付いていると、前のコマンドの
3257 \fIn\fP 番目の単語 (前のコマンドの単語は 0 から数えます)。 引き数が負ならば、前のコマンドの最後から \fIn\fP 番目の単語が挿入されます。
3258 引き数 \fIn\fP が一度決まると、コマンドの引き数が履歴の展開での "!\fIn\fP" の指定のように展開されます。
3259 .TP 
3260 \fByank\-last\-arg (M\-.\^, M\-_\^)\fP
3261 前のコマンドの最後の引き数 (一つ前の履歴エントリの最後の単語) を挿入します。 引き数があると、\fByank\-nth\-arg\fP
3262 と全く同じように動作します。 \fByank\-last\-arg\fP を繰り返して呼び出すと、 履歴リストを遡って参照が行われ、
3263 それぞれの行の最後の引き数が順番に挿入されます。 繰り返して呼び出すときの引き数は、履歴の中を動く方向を決めます。 負の引き数は、履歴の中を動く方向
3264 (後方または前方) を反転します。 履歴の展開での "!$" の指定のように、 最後の引き数の展開に履歴の展開の機能が使われます。
3265 .TP 
3266 \fBshell\-expand\-line (M\-C\-e)\fP
3267 シェルが行うのと同じように行の展開を行います。 エイリアスや履歴の展開を含め、シェルの行う全ての単語展開が行われます。
3268 履歴の展開の説明については、後述の
3269 .SM
3270 \fB履歴の展開\fP を参照してください。
3271 .TP 
3272 \fBhistory\-expand\-line (M\-^)\fP
3273 現在の行で履歴の展開を行います。 履歴の展開の説明については、後述の
3274 .SM
3275 \fB履歴の展開\fP を参照してください。
3276 .TP 
3277 \fBmagic\-space\fP
3278 現在の行で履歴の展開を行い、空白を挿入します。 履歴の展開の説明については、後述の
3279 .SM
3280 \fB履歴の展開\fP を参照してください。
3281 .TP 
3282 \fBalias\-expand\-line\fP
3283 現在の行でエイリアスの展開を行います。 エイリアスの展開の説明については、前述の
3284 .SM
3285 \fBエイリアス\fP を参照してください。
3286 .TP 
3287 \fBhistory\-and\-alias\-expand\-line\fP
3288 現在の行で履歴とエイリアスの展開を行います。
3289 .TP 
3290 \fBinsert\-last\-argument (M\-.\^, M\-_\^)\fP
3291 \fByank\-last\-arg\fP と同じものです。
3292 .TP 
3293 \fBoperate\-and\-get\-next (C\-o)\fP
3294 現在の行を実行し、 履歴内の現在の行の次の行を編集用に取得します。 引き数は全て無視されます。
3295 .TP 
3296 \fBedit\-and\-execute\-command (C\-xC\-e)\fP
3297 エディタを起動して現在のコマンドラインの内容を開き、 その結果をシェルのコマンドとして実行します。 \fBbash\fP はエディタとして
3298 .SM
3299 \fB$VISUAL\fP,
3300 .SM
3301 \fB$EDITOR\fP, \fIemacs\fP の順で起動を試みます。
3302 .PD
3303 .SS テキスト編集のためのコマンド
3304 .PP
3305 .PD 0
3306 .TP 
3307 \fBdelete\-char (C\-d)\fP
3308 ポイントの文字を削除します。 ポイントが行の先頭であり、その行に文字がなく、 さらに打ち込んだ最後の文字が \fBdelete\-char\fP
3309 に割り当てられていなければ、
3310 .SM
3311 \fBEOF\fP が返されます。
3312 .TP 
3313 \fBbackward\-delete\-char (Rubout)\fP
3314 カーソルの前の文字を削除します。数値の引き数を与えると、 削除したテキストをキルリングに保存します。
3315 .TP 
3316 \fBforward\-backward\-delete\-char\fP
3317 カーソルが行末になければカーソルがある位置の文字を削除します。 カーソルが行末にある場合には、カーソルの前の文字を削除します。
3318 .TP 
3319 \fBquoted\-insert (C\-q, C\-v)\fP
3320 次に打ち込んだ文字をそのまま行に追加します。 これは \fBC\-q\fP 等の文字を挿入するために使います。
3321 .TP 
3322 \fBtab\-insert (C\-v TAB)\fP
3323 タブ文字を挿入します。
3324 .TP 
3325 \fBself\-insert (a,\ b,\ A,\ 1,\ !,\ ...)\fP
3326 打ち込んだ文字を挿入します。
3327 .TP 
3328 \fBtranspose\-chars (C\-t)\fP
3329 ポイントの前にある文字を動かし、 現在ポイントがある文字の後ろに持っていきます。 同時にポイントも前に進みます。ポイントが行の最後にある場合は、
3330 ポイントの前の 2 文字が交換されます。 負の引き数を指定すると、何も起こりません。
3331 .TP 
3332 \fBtranspose\-words (M\-t)\fP
3333 ポイントの前にある単語を動かし、 ポイントの後ろにある単語の後ろに持っていきます。 この際には、ポイントも始めに前にあった単語の後ろまで移動します。
3334 ポイントが行の最後にある場合は、行の最後の 2 単語が交換されます。
3335 .TP 
3336 \fBupcase\-word (M\-u)\fP
3337 現在の (または後ろの) 単語を大文字にします。 負の引き数を指定すると、前の単語を大文字にしますが、 ポイントは動きません。
3338 .TP 
3339 \fBdowncase\-word (M\-l)\fP
3340 現在の (または後ろの) 単語を小文字にします。 負の引き数を指定すると、前の単語を小文字にしますが、 ポイントは動きません。
3341 .TP 
3342 \fBcapitalize\-word (M\-c)\fP
3343 現在の (または後ろの) 単語をキャピタライズします (単語の先頭の文字を大文字にします)。 負の引き数を指定すると前の単語をキャピタライズしますが、
3344 ポイントは動きません。
3345 .TP 
3346 \fBoverwrite\-mode\fP
3347 上書きモードをトグルさせます。 正の引き数を指定すると上書きモードに切り替えます。 負の引き数を指定すると挿入モードに切り替えます。 このコマンドは
3348 \fBemacs\fP モードでのみ有効です。 \fBvi\fP モードでは違った形で上書きします。 \fIreadline()\fP
3349 を呼び出したときは毎回、挿入モードで始まります。 上書きモードでは、\fBself\-insert\fP が割り当てられた文字は、
3350 ポイントの位置のテキストを右に押し出すのではなく置き換えます。 \fBbackward\-delete\-char\fP が割り当てられた文字は、
3351 ポイントの前の文字をスペースで置き換えます。 このコマンドはデフォルトではキーに割り当てられていません。
3352 .PD
3353 .SS キルとヤンク
3354 .PP
3355 .PD 0
3356 .TP 
3357 \fBkill\-line (C\-k)\fP
3358 ポイントから行末までのテキストをキルします。
3359 .TP 
3360 \fBbackward\-kill\-line (C\-x Rubout)\fP
3361 現在のカーソル位置から行頭までをキルします。
3362 .TP 
3363 \fBunix\-line\-discard (C\-u)\fP
3364 .\" There is no real difference between this and backward-kill-line
3365 ポイントから行頭までをキルします。 キルされたテキストはキルリング (kill\-ring) に入ります。
3366 .TP 
3367 \fBkill\-whole\-line\fP
3368 現在の行の文字を全てキルします。ポイントの位置は関係ありません。
3369 .TP 
3370 \fBkill\-word (M\-d)\fP
3371 ポイントから現在の単語の終わりまでをキルします。 ポイントが単語と単語の間であれば、後ろの単語の終わりまでをキルします。 単語の境界は
3372 \fBforward\-word\fP で使われているものと同じです。
3373 .TP 
3374 \fBbackward\-kill\-word (M\-Rubout)\fP
3375 ポイントの前にある単語をキルします。 単語の境界は \fBbackward\-word\fP で使われているものと同じです。
3376 .TP 
3377 \fBshell\-kill\-word (M\-d)\fP
3378 ポイントから現在の単語の終わりまでをキルします。 ポイントが単語と単語の間であれば、後ろの単語の終わりまでをキルします。 単語の境界は
3379 \fBshell\-forward\-word\fP で使われているものと同じです。
3380 .TP 
3381 \fBshell\-backward\-kill\-word (M\-Rubout)\fP
3382 ポイントの前にある単語をキルします。 単語の境界は \fBshell\-backward\-word\fP で使われているものと同じです。
3383 .TP 
3384 \fBunix\-word\-rubout (C\-w)\fP
3385 ポイントの前にある単語をキルします。 その際には空白を単語の境界として用います。 キルされたテキストはキルリングに入ります。
3386 .TP 
3387 \fBunix\-filename\-rubout\fP
3388 ポイントの前にある単語をキルします。 その際には空白とスラッシュを単語の境界として用います。 キルされたテキストはキルリングに入ります。
3389 .TP 
3390 \fBdelete\-horizontal\-space (M\-\e)\fP
3391 ポイントの周りの空白とタブを全て削除します。
3392 .TP 
3393 \fBkill\-region\fP
3394 現在のリージョン中のテキストをキルします。
3395 .TP 
3396 \fBcopy\-region\-as\-kill\fP
3397 リージョン中のテキストをキルバッファにコピーします。
3398 .TP 
3399 \fBcopy\-backward\-word\fP
3400 ポイントの前の単語をキルバッファにコピーします。単語の境界は \fBbackward\-word\fP と同じです。
3401 .TP 
3402 \fBcopy\-forward\-word\fP
3403 ポイントの後ろの単語をキルバッファにコピーします。単語の境界は \fBforward\-word\fP と同じです。
3404 .TP 
3405 \fByank (C\-y)\fP
3406 キルリングの先頭のテキストをバッファ中のポイントにヤンクします。
3407 .TP 
3408 \fByank\-pop (M\-y)\fP
3409 キルリングの順番を 1 つ移動し、新たに先頭になったテキストをヤンクします。 \fByank\fP または \fByank\-pop\fP の後にしか使えません。
3410 .PD
3411 .SS 数値の引き数
3412 .PP
3413 .PD 0
3414 .TP 
3415 \fBdigit\-argument (M\-0, M\-1, ..., M\-\-)\fP
3416 すでに入力された引き数にこの数字を追加するか、 またはこの数字によって新しい引き数を始めます。 M\-\- を使うと、負の値を指定できます。
3417 .TP 
3418 \fBuniversal\-argument\fP
3419 引き数を指定する別の方法です。 このコマンドに続けて 1 つ以上の数字が入力された場合 (頭にマイナス記号を付けることもできます)、
3420 これらの数字で引き数が定義されます。 このコマンドの後に数字が続いた場合、 \fBuniversal\-argument\fP
3421 を再び実行すると数値の引き数を終了しますが、 そうでない場合は無視されます。 特殊なケースとして、
3422 このコマンドの直後に数字でもマイナス記号でもない文字がある場合には、 次のコマンドに対する引き数カウントが 4 倍になります。 引き数カウントは最初は
3423 1 なので、 この機能を一度実行すると引き数カウントは 4 になり、 もう一度実行すると引き数カウントは 16 になります。 それ以降も同様です。
3424 .PD
3425 .SS 補完
3426 .PP
3427 .PD 0
3428 .TP 
3429 \fBcomplete (TAB)\fP
3430 ポイントの前のテキストについて補完を試みます。 \fBbash\fP が補完を行う際には、 変数 (テキストが \fB$\fP で始まる場合)、 ユーザ名
3431 (テキストが \fB~\fP で始まる場合)、 ホスト名 (テキストが \fB@\fP で始まる場合)、 コマンド (エイリアスや関数も含みます)
3432 の順序でマッチを行います。 いずれにもマッチしない場合には、 ファイル名補完を試みます。
3433 .TP 
3434 \fBpossible\-completions (M\-?)\fP
3435 ポイントの前のテキストの補完候補を列挙します。
3436 .TP 
3437 \fBinsert\-completions (M\-*)\fP
3438 ポイントの前のテキストを補完して得られるものを全て挿入します。 挿入されるものは、\fBpossible\-completions\fP
3439 で列挙されるものと同じです。
3440 .TP 
3441 \fBmenu\-complete\fP
3442 \fBcomplete\fP コマンドに似ていますが、 補完される単語を補完候補リストのうちの 1 つと置換します。 \fBmenu\-complete\fP
3443 を繰り返して実行すると、 補完候補のリストが次々と順番に挿入されます。 補完リストの最後まで来るとベルが (\fBbell\-style\fP
3444 の設定に基づいて)  鳴らされ、元のテキストに戻ります。 引き数 \fIn\fP を指定すると、リスト中の位置が \fIn\fP 個進みます。
3445 負の引き数を指定すると、リスト中を逆向きに戻れます。 このコマンドは \fBTAB\fP に割り当てることを意図して用意されたものですが、
3446 デフォルトでは割り当ては行われていません。
3447 .TP 
3448 \fBmenu\-complete\-backward\fP
3449 \fBmenu\-complete\fP コマンドに似ていますが、 \fBmenu\-complete\fP に負の引き数を与えたときのように、
3450 補完候補のリストを逆向きに進みます。 このコマンドはデフォルトではキーに割り当てられていません。
3451 .TP 
3452 \fBdelete\-char\-or\-list\fP
3453 カーソルが行頭や行末に無ければ、カーソルの下の文字を削除します (\fBdelete\-char\fP と同様です)。 カーソルが行末にある場合は、
3454 \fBpossible\-completions\fP と同じ動作をします。 このコマンドはデフォルトではキーに割り当てられていません。
3455 .TP 
3456 \fBcomplete\-filename (M\-/)\fP
3457 ポイントの前のテキストについてファイル名の補完を試みます。
3458 .TP 
3459 \fBpossible\-filename\-completions (C\-x /)\fP
3460 ポイントの前のテキストについて補完候補を列挙します。 テキストはファイル名として扱われます。
3461 .TP 
3462 \fBcomplete\-username (M\-~)\fP
3463 ポイントの前のテキストについて補完を試みます。 テキストはユーザ名として扱われます。
3464 .TP 
3465 \fBpossible\-username\-completions (C\-x ~)\fP
3466 ポイントの前のテキストについて補完候補を列挙します。 テキストはユーザ名として扱われます。
3467 .TP 
3468 \fBcomplete\-variable (M\-$)\fP
3469 ポイントの前のテキストについて補完を試みます。 テキストはシェル変数として扱われます。
3470 .TP 
3471 \fBpossible\-variable\-completions (C\-x $)\fP
3472 ポイントの前のテキストについて補完候補を列挙します。 テキストはシェル変数として扱われます。
3473 .TP 
3474 \fBcomplete\-hostname (M\-@)\fP
3475 ポイントの前のテキストについて補完を試みます。 テキストはホスト名として扱います。
3476 .TP 
3477 \fBpossible\-hostname\-completions (C\-x @)\fP
3478 ポイントの前のテキストについて補完候補を列挙します。 テキストはホスト名として扱います。
3479 .TP 
3480 \fBcomplete\-command (M\-!)\fP
3481 ポイントの前のテキストについて補完を試みます。 テキストはコマンド名として扱います。 コマンド補完の際にマッチングを試みる順序は、
3482 エイリアス、予約語、シェル関数、シェルの組み込みコマンド、 実行ファイルです。
3483 .TP 
3484 \fBpossible\-command\-completions (C\-x !)\fP
3485 ポイントの前のテキストについて補完候補を列挙します。 テキストはコマンド名として扱います。
3486 .TP 
3487 \fBdynamic\-complete\-history (M\-TAB)\fP
3488 ポイントの前のテキストについて補完を試みます。 履歴リストの各行に対してテキストの比較が行われ、 マッチしたものが補完の候補となります。
3489 .TP 
3490 \fBdabbrev\-expand\fP
3491 ポイントの前のテキストについてメニュー補完を試みます。 履歴リストの各行に対してテキストの比較が行われ、 マッチしたものが補完の候補となります。
3492 .TP 
3493 \fBcomplete\-into\-braces (M\-{)\fP
3494 ファイル名補完を実行し、補完候補のリストを挿入します。 シェルから利用可能なリストとなるように、 返される候補はブレースで括られます (前述の
3495 \fBブレース展開\fP を参照)。
3496 .PD
3497 .SS キーボードマクロ
3498 .PP
3499 .PD 0
3500 .TP 
3501 \fBstart\-kbd\-macro (C\-x (\^)\fP
3502 現在のキーボードマクロに対して入力される文字列の保存を開始します。
3503 .TP 
3504 \fBend\-kbd\-macro (C\-x )\^)\fP
3505 現在のキーボードマクロに対して入力された文字列の保存を終了し、 その定義を格納します。
3506 .TP 
3507 \fBcall\-last\-kbd\-macro (C\-x e)\fP
3508 最後に定義されたキーボードマクロを再実行します。 マクロ内の各文字があたかもキーボードから入力されたかのように出力されます。
3509 .PD
3510 .SS その他
3511 .PP
3512 .PD 0
3513 .TP 
3514 \fBre\-read\-init\-file (C\-x C\-r)\fP
3515 \fIinputrc\fP ファイルの内容を読み込み、 このファイル中の割り当てや変数設定を取り込みます。
3516 .TP 
3517 \fBabort (C\-g)\fP
3518 現在の編集行を捨て、端末のベルを鳴らします (動作は \fBbell\-style\fP の設定に従います)。
3519 .TP 
3520 \fBdo\-uppercase\-version (M\-a, M\-b, M\-\fP\fIx\fP\fB, ...)\fP
3521 メタ文字と共に入力された文字 \fIx\fP が小文字であれば、 \fIx\fP に対応する大文字に割り当てられているコマンドを実行します。
3522 .TP 
3523 \fBprefix\-meta (ESC)\fP
3524 次に入力される文字を、 メタ文字と共に入力されたことにします。
3525 .SM
3526 \fBESC\fP \fBf\fP は \fBMeta\-f\fP と同じ意味です。
3527 .TP 
3528 \fBundo (C\-_, C\-x C\-u)\fP
3529 インクリメンタルアンドゥを行います。 履歴は行ごとに別々に記憶されています。
3530 .TP 
3531 \fBrevert\-line (M\-r)\fP
3532 この行に対して行った変更を全て取り消します。 このコマンドは、行が初期状態に戻るまで \fBundo\fP コマンドを実行するようなものです。
3533 .TP 
3534 \fBtilde\-expand (M\-&)\fP
3535 現在の単語についてチルダ展開を実行します。
3536 .TP 
3537 \fBset\-mark (C\-@, M\-<space>)\fP
3538 ポイントにマークを設定します。 数字の引き数が与えられた場合には、 マークはその位置に設定されます。
3539 .TP 
3540 \fBexchange\-point\-and\-mark (C\-x C\-x)\fP
3541 ポイントをマークと入れ換えます。 保存されている位置が現在のカーソル位置になり、 古いカーソル位置がマークとして保存されます。
3542 .TP 
3543 \fBcharacter\-search (C\-])\fP
3544 文字を 1 つ読み込み、 その文字が次に現われる場所にポイントを移動させます。 負のカウントを与えると、その文字が前に現われた場所を探します。
3545 .TP 
3546 \fBcharacter\-search\-backward (M\-C\-])\fP
3547 文字を 1 つ読み込み、 その文字が前に現われた場所にポイントを移動させます。 負のカウントを与えると、その文字が次に現われる場所を探します。
3548 .TP 
3549 \fBskip\-csi\-sequence\fP
3550 Home や End などのキーに定義されるような複数キーからなるシーケンスを 使い切るだけの文字を読み込みます。 これらのシーケンスは、通常
3551 ESC\-[ で表されるコントロールシーケンス (CSI)  で始まります。 このシーケンスが "\e[" に割り当てられているとすると、 キーが明示的に
3552 readline のコマンドに割り当てられている場合を除き、 それらのシーケンスを生み出すキーは、
3553 はぐれた文字を編集バッファに挿入されず、何もしません。 このコマンドはデフォルトではキーに割り当てられていませんが、 多くの場合 ESC\-[
3554 に割り当てられます。
3555 .TP 
3556 \fBinsert\-comment (M\-#)\fP
3557 数字の引き数を指定しない場合、readline の \fBcomment\-begin\fP 変数の値が現在の行の先頭に挿入されます。
3558 数字の引き数を指定すると、トグル状に動作します。 つまり、行の先頭の文字が \fBcomment\-begin\fP の値にマッチしない場合には、
3559 その値が挿入されます。マッチする場合には、\fBcomment\-begin\fP の文字が行の先頭から削除されます。
3560 いずれの場合も、改行が打ち込まれたのと同じように行の入力が完了します。 \fBcomment\-begin\fP のデフォルト値によって、
3561 このコマンドは現在の行をシェルのコメントとします。 数字の引き数を指定したことでコメントの文字が削除されると、 行はシェルにより実行されます。
3562 .TP 
3563 \fBglob\-complete\-word (M\-g)\fP
3564 ポイントの前の単語がパス名展開のパターンとして扱われます。 末尾に暗黙のアスタリスクが付いているものとみなされます。
3565 このパターンを使って補完候補のファイル名のリストが生成されます。
3566 .TP 
3567 \fBglob\-expand\-word (C\-x *)\fP
3568 ポイントの前の単語がパス名展開のパターンとして扱われ、 この単語と置き換えられる形でマッチするファイル名のリストが挿入されます。
3569 数字の引き数を与えると、パス名展開の前に末尾にアスタリスクを追加します。
3570 .TP 
3571 \fBglob\-list\-expansions (C\-x g)\fP
3572 \fBglob\-expand\-word\fP で生成されるのと同じ展開結果のリストが表示され、 行が再描画されます。
3573 数字の引き数を与えると、パス名展開の前に末尾にアスタリスクを追加します。
3574 .TP 
3575 \fBdump\-functions\fP
3576 全ての関数とそのキー割り当てを、 readline の出力ストリームに出力します。 数値の引き数を与えると、 出力は \fIinputrc\fP
3577 に書き込める形に整形されます。
3578 .TP 
3579 \fBdump\-variables\fP
3580 全ての設定可能な readline の変数とその値を、 readline の出力ストリームに出力します。 数値の引き数を与えると、 出力は
3581 \fIinputrc\fP に書き込める形に整形されます。
3582 .TP 
3583 \fBdump\-macros\fP
3584 マクロに割り当てられた readline のキーシーケンスと マクロが出力する文字列を全て出力します。 数値の引き数を与えると、 出力は
3585 \fIinputrc\fP に書き込める形に整形されます。
3586 .TP 
3587 \fBdisplay\-shell\-version (C\-x C\-v)\fP
3588 現在実行している \fBbash\fP のバージョン情報を表示します。
3589 .PD
3590 .SS プログラム補完
3591 .PP
3592 \fBcomplete\fP 組み込みコマンドで 補完仕様 (\fIcompspec\fP) が定義されているコマンドに対して 引き数の単語補完が試みられると、
3593 プログラム補完の機能が呼び出されます (組み込みコマンド \fBcomplete\fP については、後述する
3594 .SM
3595 \fBシェルの組み込みコマンド\fP
3596 を参照)。
3597 .PP
3598 まず、コマンド名が特定されます。 コマンド名の単語が空文字列であれば (空の行の先頭で補完しようとしたとき)、 \fBcomplete\fP の \fB\-E\fP
3599 オプションで定義された補完仕様が使われます。 そのコマンドに対して補完仕様が定義されていれば、
3600 その補完仕様がその単語の補完候補のリスト生成に使われます。 コマンドの単語がフルパス名であれば、 最初にフルパス名の補完仕様が検索されます。
3601 フルパス名に対する補完仕様が見つからなかった場合は、 最後のスラッシュ以降の部分に対して該当する補完仕様を見つけようとします。
3602 補完仕様が見つからなかった場合は、 \fBcomplete\fP の \fB\-D\fP オプションで定義された補完仕様が使われます。
3603 .PP
3604 補完仕様が見つかると、その補完仕様を使って マッチする単語のリストが生成されます。 補完仕様が見つからなかった場合は、 前述の \fB補完\fP
3605 の節で説明したような \fBbash\fP のデフォルトの補完が行われます。
3606 .PP
3607 まず、補完仕様で指定された動作が用いられます。 補完される単語の前置部分にマッチするものだけが返されます。 ファイル名やディレクトリ名の補完に
3608 \fB\-f\fP や \fB\-d\fP オプションが使用された場合は、シェル変数
3609 .SM
3610 \fBFIGNORE\fP がマッチのフィルタとして使用されます。
3611 .PP
3612 続いて \fB\-G\fP オプションによって指定された ファイル名展開パターンの補完が生成されます。 パターンによって生成された単語は、
3613 補完される単語とマッチする必要はありません。
3614 .SM
3615 \fBGLOBIGNORE\fP シェル変数はマッチのフィルタとしては使われませんが、
3616 .SM
3617 \fBFIGNORE\fP 変数は使用されます。
3618 .PP
3619 次に、 \fB\-W\fP オプションで指定された引き数の文字列が考慮されます。 文字列は、最初に
3620 .SM
3621 \fBIFS\fP
3622 特殊変数の文字を区切り文字として分割されます。 シェルのクォート処理は考慮されます。 それぞれの単語は、前述の
3623 .SM
3624 \fB展開\fP
3625 で示したように、ブレース展開、チルダ展開、パラメータと変数の展開、 コマンド置換、算術式展開、パス名展開が行われます。
3626 結果は、前述の\fB単語の分割\fPで示した規則によって分割されます。 展開の結果は補完される単語の前置部分とマッチが行われ、
3627 マッチした単語が補完候補となります。
3628 .PP
3629 これらのマッチが生成された後、 シェル関数や \fB\-F\fP や \fB\-C\fP オプションで指定されたコマンドが呼び出されます。
3630 コマンドや関数が呼び出されるときは、
3631 .SM
3632 \fBCOMP_LINE\fP,
3633 .SM
3634 \fBCOMP_POINT\fP,
3635 .SM
3636 \fBCOMP_KEY\fP,
3637 .SM
3638 \fBCOMP_TYPE\fP 変数に前述の\fBシェル変数\fPで示すように値が設定されます。
3639 シェル関数が呼び出される場合は、
3640 .SM
3641 \fBCOMP_WORDS\fP と
3642 .SM
3643 \fBCOMP_CWORD\fP 変数も設定されます。
3644 関数やコマンドが呼び出されるときは、 最初の引き数は引き数が補完されるコマンドの名前、 二番目の引き数は補完される単語、
3645 三番目の引き数は現在のコマンドラインで補完中の単語の 前に置かれる単語となります。
3646 補完される単語に対して生成された補完の候補はフィルタリングされません。 関数やコマンドは生成されたマッチとは無関係に補完されます。
3647 .PP
3648 \fB\-F\fP で指定された関数がまず呼び出されます。 関数は、後述する \fBcompgen\fP 組み込みコマンドを含めた、
3649 全てのシェルの機能を使ってマッチを生成します。 補完候補は必ず
3650 .SM
3651 \fBCOMPREPLY\fP 配列変数に格納されます。
3652 .PP
3653 続いて \fB\-C\fP オプションで指定されたコマンドが呼び出され、 環境変数をコマンド置換します。 このコマンドは、補完候補を 1
3654 行にひとつずつ標準出力に出力します。 必要があれば、バックスラッシュが改行をエスケープするために使用されます。
3655 .PP
3656 全ての補完候補が生成された後で、 \fB\-X\fP オプションで指定されたフィルタが補完候補に作用します。
3657 フィルタは、パス名展開で使用されたようなパターンです。パターン中の \fB&\fP は補完される単語に置換されます。 文字通りの \fB&\fP
3658 はバックスラッシュでエスケープします。 バックスラッシュはマッチを試みる前に削除されます。 パターンにマッチした補完は候補から削除されます。 先行する
3659 \fB!\fP はパターンを否定します。 この場合、パターンにマッチしなかった補完が削除されます。
3660 .PP
3661 最後に、\fB\-P\fP と \fB\-S\fP オプションで指定された 前置部分と後置部分が補完候補のそれぞれに加えられます。 そして結果が readline
3662 補完コードに補完候補のリストとして返されます。
3663 .PP
3664 直前に行われた動作が何にもマッチせず、 補完仕様が定義されたときに \fB\-o dirnames\fP オプションが \fBcomplete\fP
3665 に与えられていれば、 ディレクトリ名への補完が試みられます。
3666 .PP
3667 補完仕様が定義されたときに \fB\-o plusdirs\fP オプションが \fBcomplete\fP に与えられていれば、
3668 ディレクトリ名への補完が試みられ、マッチした候補が全て ほかの動作の結果に付け加えられます。
3669 .PP
3670 デフォルトでは、補完仕様が見つかった場合、 それが生成したものがなんであれ、 全ての補完候補のリストとして、補完コードに返されます。 デフォルトの
3671 \fBbash\fP 補完は試みられず、 readline のデフォルトのファイル名補完は無効になります。 補完仕様が定義されたときに \fB\-o
3672 bashdefault\fP オプションが \fBcomplete\fP に与えられていれば、 補完仕様が何にもマッチしなければ \fBbash\fP
3673 のデフォルトの補完が試みられます。 補完仕様が定義されたときに \fB\-o default\fP オプションが \fBcomplete\fP に与えられていれば、
3674 補完仕様が (試みられていれば、デフォルトの \fBbash\fP の補完も)  何にもマッチしなければ readline のデフォルトの補完が行われます。
3675 .PP
3676 補完仕様でディレクトリ名の補完が必要とされる場合、 プログラム補完の関数は readline に、
3677 ディレクトリへのシンボリックリンクに補完された名前の最後に スラッシュを追加させます。 これは readline
3678 の変数\fBmark\-symlinked\-directories\fP の設定に関わらず、 readline の変数 \fBmark\-directories\fP
3679 の値に左右されます。
3680 .PP
3681 動的に補完を変えるための方法があります。 これは \fBcomplete \-D\fP で指定されたデフォルトの補完と 組み合わせたときに非常に便利です。
3682 補完の処理のために実行されたシェル関数は、終了ステータスとして 124 を返すことで、補完を再度試みることを指示できます。 シェル関数が 124
3683 を返し、補完が試みられるコマンド (関数が実行されるときの第 1 引き数) に対して定義された補完仕様が
3684 変更されていれば、プログラム補完はコマンドの新しい補完仕様を 探すために最初からやり直されます。 これにより一連の補完が、一度に読み込まれるのではなく、
3685 補完が試みられるときに動的に組み立てられます。
3686 .PP
3687 例えば、補完仕様のライブラリがあり、それぞれがコマンドの名前に 合わせたファイルに保存されていると仮定すると、
3688 以下のデフォルトの補完関数は補完を動的に読み込みます。
3689 .PP
3690 \f(CW_completion_loader()\fP
3691 .br
3692 \f(CW{\fP
3693 .br
3694 \f(CW   . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124\fP
3695 .br
3696 \f(CW}\fP
3697 .br
3698 \f(CWcomplete \-D \-F _completion_loader\fP
3699 .br
3700 \fP
3701 .SH "履歴 (HISTORY)"
3702 \fB\-o history\fP オプションを組み込みコマンドの \fBset\fP で有効にすると、 \fIコマンド履歴 (command history)\fP
3703 (以前に入力したコマンドのリスト)  にアクセスできるようになります。 変数
3704 .SM HISTSIZE
3705 の値が、履歴リストに保存するコマンドの数になります。 過去に入力したコマンドのうち、最新
3706 .SM
3707 \fBHISTSIZE\fP 個分 (デフォルトは
3708 500 個) のテキストが保存されます。 シェルは各コマンドを、パラメータ展開や変数展開 (前述の
3709 .SM
3710 \fB展開\fP を参照)
3711 を行う前の形で履歴リストに格納します。 ただし、履歴展開は実行してから格納します。 履歴展開はシェル変数
3712 .SM
3713 \fBHISTIGNORE\fP と
3714 .SM
3715 \fBHISTCONTROL\fP の値に従って実行されます。
3716 .PP
3717 起動時に、履歴は変数
3718 .SM
3719 \fBHISTFILE\fP (デフォルトは \fI~/.bash_history\fP)
3720 が示すファイルの内容で初期化されます。
3721 .SM
3722 \fBHISTFILE\fP で指定されたファイルは、
3723 .SM
3724 \fBHISTFILESIZE\fP
3725 で指定された行数を越えないように、必要に応じて切り詰められます。 履歴ファイルを読み込むときに、履歴のコメント文字で始まり直後に数字が続く行は、
3726 直前の履歴行のタイムスタンプとして解釈されます。 こうしたタイムスタンプを表示するかどうかは、変数
3727 .SM
3728 \fBHISTTIMEFORMAT\fP
3729 の値により決まります。 対話的なシェルが終了する際には、最近の
3730 .SM
3731 \fB$HISTSIZE\fP 個の行が履歴リストから
3732 .SM
3733 \fB$HISTFILE\fP にコピーされます。 シェルオプション \fBhistappend\fP (
3734 .SM
3735 \fBシェルの組み込みコマンド\fP の項の
3736 \fBshopt\fP の説明を参照) が有効になっていると、 これらの行が履歴ファイルの末尾に追加されます。
3737 このオプションが無効ならば、履歴ファイルは上書きされます。
3738 .SM
3739 \fBHISTFILE\fP
3740 が設定されていないか、履歴ファイルが書き込めない状態だと、 履歴は保存されません。 変数
3741 .SM
3742 \fBHISTTIMEFORMAT\fP
3743 が設定されている場合、シェルのセッションを越えて保持されるよう、 タイムスタンプが履歴のコメント文字を付けて履歴ファイルに書き込まれます。
3744 履歴のコメント文字は、タイムスタンプをほかの履歴行と区別するために使われます。 履歴の保存を行った後には、履歴ファイルは行数が
3745 .SM
3746 \fBHISTFILESIZE\fP 行を越えないように切り詰められます。
3747 .SM
3748 \fBHISTFILESIZE\fP
3749 が設定されていなければ、切り詰めは行われません。
3750 .PP
3751 組み込みコマンド \fBfc\fP (後述の
3752 .SM
3753 \fBシェルの組み込みコマンド\fP を参照)
3754 を用いると、履歴リストの一部を表示・編集して再実行できます。 組み込みコマンドの \fBhistory\fP を用いると、履歴リストを表示・編集したり、
3755 履歴ファイルを操作したりできます。 コマンドライン編集を使っている場合には、 各編集モードでいろいろな検索コマンドが利用でき、
3756 履歴リストへアクセスできます。
3757 .PP
3758 このシェルでは、どのコマンドが履歴リストに保存されるかを制御できます。
3759 .SM
3760 \fBHISTCONTROL\fP 変数と
3761 .SM
3762 \fBHISTIGNORE\fP 変数を設定すると、 シェルは入力されたコマンドの一部しか保存しなくなります。 シェルオプションの \fBcmdhist\fP
3763 を有効にすると、シェルは複数行に別れているコマンドの各行を 同じ履歴エントリに保存しようとします。
3764 この際には、文法的な正しさを保つためにセミコロンが必要に応じて追加されます。 シェルオプションの \fBlithist\fP
3765 を有効にすると、このシェルは行の途中に セミコロンではなく改行文字を置く形でコマンドを保存します。
3766 シェルオプションの設定と設定取り消しについては、後述の
3767 .SM
3768 \fBシェルの組み込みコマンド\fP における説明を参照してください。
3769 .SH 履歴の展開
3770 .PP
3771 このシェルは、 \fBcsh\fP の履歴展開と同じような履歴機能をサポートしています。 このセクションでは、履歴展開で使用できる記法・機能を説明します。
3772 この機能は対話的シェルならばデフォルトで有効になっていますが、 組み込みコマンド \fBset\fP の \fB\+H\fP オプション (後述の
3773 .SM
3774 \fBシェルの組み込みコマンド\fP を参照) で無効にできます。 非対話的シェルの場合は、デフォルトでは履歴展開は行われません。
3775 .PP
3776 履歴展開は、履歴リスト中の単語を入力ストリームに入れます。 この機能を利用すると、コマンドを繰り返したり、
3777 前のコマンドで指定したオプションを現在の入力行に挿入したり、 前のコマンドの誤りを手早く直したり、 といったことが簡単にできるようになります。
3778 .PP
3779 履歴展開が実行されるのは、入力行全体を読み込んだ直後であり、 シェルが行を単語に分割するよりも前です。 履歴展開の動作は 2 段階で行われます。
3780 まず最初に、置換に使う行を履歴リストから選びます。 次に、その行のどの部分を現在の行に書き込むかを選択します。 履歴リストから選ばれた行は\fIイベント
3781 (event)\fP と呼ばれ、 この行のうち動作の対象となる部分を\fI単語列 (words)\fPと呼びます。 様々な\fI修飾子 (modifier)\fP
3782 が利用でき、 選択された単語列の操作が可能になっています。 行の単語への分割は入力を読み込むときと同じように行われるので、
3783 \fIメタ文字\fPで区切られた複数の単語をクォートで括ったものは 1 つの単語とみなされます。 履歴展開が行われるのは、履歴展開文字が現われたときです。
3784 履歴展開文字はデフォルトでは \^\fB!\fP\^ です。 履歴展開文字をクォートできるのは、 バックスラッシュ (\^\fB\e\fP\^)
3785 とシングルクォートだけです。
3786 .PP
3787 履歴展開文字の直後にあって、クォートされていなくても、 履歴展開されない文字があります。 空白文字、タブ文字、改行文字、復帰文字、\fB=\fP です。
3788 シェルオプションの \fBextglob\fP が有効になっている場合には、 \fB(\fP も展開されません。
3789 .PP
3790 組み込みコマンドの \fBshopt\fP を用いて、何種類かあるシェルオプションを設定すると、 履歴展開の動作を調整できます。 シェルオプションの
3791 \fBhistverify\fP が有効で (組み込みコマンド \fBshopt\fP の説明を参照)、かつ \fBreadline\fP が使われている場合には、
3792 履歴置換を行った結果はすぐにはシェルのパーザに渡されません。 展開された行は \fBreadline\fP
3793 の編集バッファに再び読み込まれ、さらに編集が行える状態になります。 \fBreadline\fP を使用しており、かつシェルオプションの
3794 \fBhistreedit\fP が有効である場合、履歴置換が失敗してもその結果は \fBreadline\fP
3795 の編集バッファに再び読み込まれ、訂正できる状態となります。 組み込みコマンド \fBhistory\fP の \fB\-p\fP
3796 オプションを使うと、実際に履歴展開を行う前に、 どのように展開されるのかを見ることができます。 組み込みコマンド \fBhistory\fP の \fB\-s\fP
3797 オプションを使うと、実際にコマンドの実行をせずに、 コマンドを履歴リストの末尾に追加でき、 それ以降の呼び出しで利用できるようになります。
3798 .PP
3799 このシェルでは、履歴展開機構で使ういろいろな文字を制御できます (前述の \fBシェル変数\fP の項目における \fBhistchars\fP の説明を参照)。
3800 シェルは、履歴ファイルに書き込むときに、履歴のコメント文字を使って、 履歴のタイムスタンプであることが分かるようにします。
3801 .SS "イベント指示子 (Event Designator)"
3802 .PP
3803 イベント指示子は、 履歴リスト中のコマンドラインエントリを参照するものです。 絶対位置の参照でない限り、イベントは履歴リスト内の
3804 現在の位置からの相対的な位置を示します。
3805 .PP
3806 .PD 0
3807 .TP 
3808 \fB!\fP
3809 履歴置換を開始します。ただし、 \fBブランク文字\fP、 改行文字、 = 、 ( (シェルオプション \fBextglob\fP が組み込みコマンド
3810 \fBshopt\fP によって有効になっている場合) のいずれかが後に続く場合は除きます。
3811 .TP 
3812 \fB!\fP\fIn\fP
3813 \fIn\fP 個目のコマンドラインを参照します。
3814 .TP 
3815 \fB!\-\fP\fIn\fP
3816 現在から \fIn\fP 個前のコマンドを参照します。
3817 .TP 
3818 \fB!!\fP
3819 直前のコマンドを参照します。`!\-1' と同義です。
3820 .TP 
3821 \fB!\fP\fIstring\fP
3822 \fIstring\fP で始まるコマンドのうち、履歴リスト中の現在位置以前で、 一番近いところで実行したものを参照します。
3823 .TP 
3824 \fB!?\fP\fIstring\fP\fB[?]\fP
3825 \fIstring\fP を含むコマンドのうち、履歴リスト中の現在位置以前で、 一番近いところで実行したものを参照します。 \fIstring\fP
3826 の直後が改行文字ならば、最後の \fB?\fP は省略してもかまいません。
3827 .TP 
3828 \fB\d\s+2^\s-2\u\fP\fIstring1\fP\fB\d\s+2^\s-2\u\fP\fIstring2\fP\fB\d\s+2^\s-2\u\fP
3829 簡易置換。 \fIstring1\fP を \fIstring2\fP に置換して直前のコマンドを繰り返します。
3830 \*(lq!!:s/\fIstring1\fP/\fIstring2\fP/\*(rq と同義です (後述の\fB修飾子\fPを参照)。
3831 .TP 
3832 \fB!#\fP
3833 これまでに打ち込んだコマンドライン全体。
3834 .PD
3835 .SS "単語指示子 (Word Designators)"
3836 .PP
3837 単語指示子 (word designator) は、 イベントから所望の欲しい単語を選ぶときに用いられます。 イベント指定と単語指示子のセパレータには
3838 \fB:\fP を用います。 単語指示子が \fB^\fP, \fB$\fP, \fB*\fP, \fB\-\fP, \fB%\fP
3839 のいずれかで始まる場合には、このセパレータは省略できます。 単語には行の先頭から順に番号が振られ、 先頭の単語が 0 になります。
3840 単語は現在の行に、空白 1 つで区切られて挿入されます。
3841 .PP
3842 .PD 0
3843 .TP 
3844 \fB0 (ゼロ)\fP
3845 0 番目の単語。シェルにとっては、コマンドを表す単語になります。
3846 .TP 
3847 \fIn\fP
3848 \fIn\fP 番目の単語。
3849 .TP 
3850 \fB^\fP
3851 最初の引き数。つまり 1 番目の単語です。
3852 .TP 
3853 \fB$\fP
3854 最後の引き数。
3855 .TP 
3856 \fB%\fP
3857 `?\fIstring\fP?' 検索にマッチする、一番現在に近い単語。
3858 .TP 
3859 \fIx\fP\fB\-\fP\fIy\fP
3860 単語の範囲。`0\-\fIy\fP' の省略形として `\-\fIy\fP' が使えます。
3861 .TP 
3862 \fB*\fP
3863 0 番目を除く全ての単語。これは `\fI1\-$\fP' の別表現です。 イベント中に単語が 1 つしかない場合に \fB*\fP を使ってもエラーにはなりません。
3864 この場合には空文字列が返されます。
3865 .TP 
3866 \fBx*\fP
3867 \fIx\-$\fP の省略形です。
3868 .TP 
3869 \fBx\-\fP
3870 \fBx*\fP と同様に \fIx\-$\fP の省略形ですが、 ただし最後の単語は含みません。
3871 .PD
3872 .PP
3873 イベント指定なしに単語指示子が与えられた場合、 直前のコマンドがイベントとして使われます。
3874 .SS "修飾子 (Modifiers)"
3875 .PP
3876 単語指示子 (省略可能) の後には、 1 個以上の以下に示す修飾子を並べて置くことができます。 それぞれの修飾子の前には `:' を付けます。
3877 .PP
3878 .PD 0
3879 .PP
3880 .TP 
3881 \fBh\fP
3882 パス名から末尾にある部分 (ファイル名) を取り除き、 前の方 (ディレクトリ部) だけを残します。
3883 .TP 
3884 \fBt\fP
3885 パス名から前の方 (ディレクトリ部) を取り除き、 末尾にある部分 (ファイル名) だけを残します。
3886 .TP 
3887 \fBr\fP
3888 末尾にある \fI.xxx\fP 形式のサフィックスを取り除き、 ベース名 (basename) だけを残します。
3889 .TP 
3890 \fBe\fP
3891 末尾のサフィックスだけを残して、全ての部分を取り除きます。
3892 .TP 
3893 \fBp\fP
3894 新しいコマンドを表示しますが、実行はしません。
3895 .TP 
3896 \fBq\fP
3897 置換が行われた単語をクォートし、それ以上の置換が行われないようにします。
3898 .TP 
3899 \fBx\fP
3900 \fBq\fP と同じように置換後の単語をクォートしますが、 \fB空白文字\fP と改行文字のところで単語に分割します。
3901 .TP 
3902 \fBs/\fP\fIold\fP\fB/\fP\fInew\fP\fB/\fP
3903 イベント行で最初に現われた \fIold\fP を \fInew\fP に置き換えます。/ の代わりに任意の区切り文字を使うこともできます。
3904 最後の区切り文字がイベント行の最後の文字ならば、 これは省略できます。 バックスラッシュ 1 つでクォートすれば、 \fIold\fP と \fInew\fP
3905 の中で区切り文字も使えます。 \fInew\fP に & が含まれている場合には、 & は \fIold\fP に置き換えられます。 バックスラッシュ 1
3906 つを前に置けば & をクォートできます。 \fIold\fP が空文字列ならば、最後に置換された \fIold\fP が設定されます。
3907 以前に履歴置換が全く行われていない場合には、現在に一番近い \fB!?\fP\fIstring\fP\fB[?]\fP の検索で使われた \fIstring\fP
3908 が設定されます。
3909 .TP 
3910 \fB&\fP
3911 直前の置換を繰り返します。
3912 .TP 
3913 \fBg\fP
3914 変更をイベント行全体に適用します。 これは `\fB:s\fP' (例:`\fB:gs/\fP\fIold\fP\fB/\fP\fInew\fP\fB/\fP') や `\fB:&\fP'
3915 と組み合わせて使われます。 `\fB:s\fP' と一緒に使った場合には、 / の代わりに任意の区切り文字を使えます。
3916 また、最後の区切り文字がイベント行の最後の文字ならば、 これは省略できます。 \fBg\fP の別名として \fBa\fP を使うこともできます。
3917 .TP 
3918 \fBG\fP
3919 この修飾子に続く `\fBs\fP' 修飾子をイベント行の各単語に 1 回ずつ適用します。
3920 .PD
3921 .SH シェルの組み込みコマンド
3922 .\" start of bash_builtins
3923 .zZ
3924 .PP
3925 特に断らない限り、このセクションで説明されている組み込みコマンドのうち \fB\-\fP で始まるオプションを受け付けるものは、オプションの終わりを表す
3926 \fB\-\-\fP も受け付けます。 組み込みコマンド \fB:\fP, \fBtrue\fP, \fBfalse\fP, \fBtest\fP はオプションを持たず、\fB\-\-\fP
3927 を特別扱いしません。 組み込みコマンド \fBexit\fP, \fBlogout\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP,
3928 \fBshift\fP は、\fB\-\fP で始まる引き数として受け取るのに、 \fB\-\-\fP を必要としません。 そのほかの組み込みコマンドは、
3929 受け取ると明記されているオプション以外を引き数として受け取り、 \fB\-\fP で始まる引き数を不正なオプションをとて解釈します。 この解釈を防ぐには
3930 \fB\-\-\fP が必要です。
3931 .sp .5
3932 .PD 0
3933 .TP 
3934 \fB:\fP [\fIarguments\fP]
3935 .PD
3936 何もしません。このコマンドは \fIarguments\fP を展開し、指定されたリダイレクトを実行する以外には何も行いません。 終了コード 0 を返します。
3937 .TP 
3938  \fB.\| \fP \fIfilename\fP [\fIarguments\fP]
3939 .PD 0
3940 .TP 
3941 \fBsource\fP \fIfilename\fP [\fIarguments\fP]
3942 .PD
3943 \fIfilename\fP からコマンドを読み込み、現在のシェル環境の下で実行します。 \fIfilename\fP
3944 内の最後に実行したコマンドの終了ステータスを返します。 \fIfilename\fP にスラッシュが含まれていない場合、 \fIfilename\fP は
3945 .SM
3946 \fBPATH\fP に含まれるディレクトリから探されます。
3947 .SM
3948 \fBPATH\fP
3949 内で検索されるファイルは、実行可能である必要はありません。 \fBbash\fP が \fIposix モード\fP 以外で動作しているときは、
3950 .SM
3951 \fBPATH\fP 中でファイルを見つけられなかった場合に、 カレントディレクトリが検索されます。 組み込みコマンド \fBshopt\fP に対する
3952 \fBsourcepath\fP オプションが無効にされている場合、
3953 .SM
3954 \fBPATH\fP の検索は行われません。 何らかの \fIarguments\fP
3955 が指定された場合、これらの引き数は \fIfilename\fP を実行したときの位置パラメータとなります。
3956 指定されなかった場合は、位置パラメータは変更されません。 返却ステータスはスクリプト内で最後に実行したコマンドのステータスです
3957 (コマンドが全く実行されなければ 0 です)。 \fIfilename\fP が見つからない場合や読み込めない場合には偽となります。
3958 .TP 
3959 \fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
3960 \fBalias\fP コマンドを引き数を付けずに (あるいは \fB\-p\fP オプションを付けて) 実行すると、エイリアスのリストが 「\fBalias\fP
3961 \fIname\fP=\fIvalue\fP」の形で標準出力に出力されます。 引き数を与えた場合には、\fIvalue\fP を与えられた \fIname\fP
3962 それぞれに対するエイリアスが定義されます。 \fIvalue\fP の末尾に空白があると、エイリアスが展開されたときに、
3963 空白の次の単語についてエイリアス置換があるかどうか調べられます。 引き数リスト中に \fIvalue\fP が与えられていない \fIname\fP
3964 があった場合は、 それぞれに対して名前とエイリアスの値が出力されます。 エイリアスが定義されていない \fIname\fP が指定された場合以外は、
3965 \fBalias\fP は真を返します。
3966 .TP 
3967 \fBbg\fP [\fIjobspec\fP ...]
3968 サスペンドされているジョブ \fIjobspec\fP を バックグラウンドで実行再開します。このジョブは、初めから \fB&\fP
3969 を付けて起動されていたかのように動作を続けます。 \fIjobspec\fP がない場合には、 シェルが記録している\fIカレントジョブ (current
3970 job)\fP が使われます。 \fBbg\fP \fIjobspec\fP は通常 0 を返しますが、ジョブ制御が無効であるときに実行した場合や、
3971 ジョブ制御が有効であっても \fIjobspec\fP が有効なジョブを指定していない場合や \fIjobspec\fP
3972 がジョブ制御なしで開始したジョブを指定している場合は異なる値を返します。
3973 .TP 
3974 \fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSV\fP]
3975 .PD 0
3976 .TP 
3977 \fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP]
3978 .TP 
3979 \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP
3980 .TP 
3981 \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP
3982 .TP 
3983 \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP
3984 .TP 
3985 \fBbind\fP \fIreadline\-command\fP
3986 .PD
3987 \fBreadline\fP の現在のキー割り当てと関数割り当てを表示したり、 キーシーケンスを \fBreadline\fP の関数やマクロに割り当てたり、
3988 \fBreadline\fP の変数を設定したりします。 オプション以外の引き数はすべて、 \fI.inputrc ,\fP に書くのと同じ形式のコマンドですが、
3989 それぞれの割り当てやコマンドは独立した引き数として渡さなければなりません。 例えば '"\eC\-x\eC\-r": re\-read\-init\-file'
3990 のように指定します。 オプションを指定した場合には、以下のような意味を持ちます:
3991 .RS
3992 .PD 0
3993 .TP 
3994 \fB\-m \fP\fIkeymap\fP
3995 キーマップ \fIkeymap\fP を、以降の割り当てによって変更します。 指定できる \fIkeymap\fP 名は、 \fIemacs,
3996 emacs\-standard, emacs\-meta, emacs\-ctlx, vi, vi\-move, vi\-command\fP,
3997 \fIvi\-insert\fP です。 \fIvi\fP は \fIvi\-command\fP と同じです。 また \fIemacs\fP は
3998 \fIemacs\-standard\fP と同じです。
3999 .TP 
4000 \fB\-l\fP
4001 \fBreadline\fP 関数の名前を全てリスト表示します。
4002 .TP 
4003 \fB\-p\fP
4004 \fBreadline\fP の関数の名前と割り当てを表示します。 表示は、再び読み込みできる形式で出力されます。
4005 .TP 
4006 \fB\-P\fP
4007 \fBreadline\fP の関数の現在の名前と割り当てをリスト表示します。
4008 .TP 
4009 \fB\-s\fP
4010 マクロに割り当てられた \fBreadline\fP のキーシーケンスと、 マクロが出力する文字列を表示します。
4011 表示は、再び読み込みできる形式で出力されます。
4012 .TP 
4013 \fB\-S\fP
4014 マクロに割り当てられた \fBreadline\fP のキーシーケンスと、 マクロが出力する文字列を表示します。
4015 .TP 
4016 \fB\-v\fP
4017 \fBreadline\fP の変数名と値を表示します。 表示は、再び読み込みできる形式で出力されます。
4018 .TP 
4019 \fB\-V\fP
4020 \fBreadline\fP の現在の変数名と値をリスト表示します。
4021 .TP 
4022 \fB\-f \fP\fIfilename\fP
4023 キー割り当てを \fIfilename\fP から読み込みます。
4024 .TP 
4025 \fB\-q \fP\fIfunction\fP
4026 指定された \fIfunction\fP を呼び出すキーを問い合わせます。
4027 .TP 
4028 \fB\-u \fP\fIfunction\fP
4029 指定された \fIfunction\fP に割り当てられているキーの割り当てを 全て取り消します。
4030 .TP 
4031 \fB\-r \fP\fIkeyseq\fP
4032 \fIkeyseq\fP に対する現在の割り当てを削除します。
4033 .TP 
4034 \fB\-x \fP\fIkeyseq\fP\fB:\fP\fIshell\-command\fP
4035 \fIkeyseq\fP が押されるたびに、 \fIshell\-command\fP が実行されるようにします。 \fIshell\-command\fP
4036 を実行するとき、シェルは変数
4037 .SM
4038 \fBREADLINE_LINE\fP に \fBreadline\fP の編集バッファの内容を設定し、変数
4039 .SM
4040 \fBREADLINE_POINT\fP に現在の挿入ポイントの位置を設定します。 実行したコマンドが
4041 .SM
4042 \fBREADLINE_LINE\fP や
4043 .SM
4044 \fBREADLINE_POINT\fP の値を変更した場合、新しい値が編集の状態に反映されます。
4045 .PD
4046 .PP
4047 認識できないオプションが与えられた場合やエラーが起きた場合以外は、 返り値は 0 になります。
4048 .RE
4049 .TP 
4050 \fBbreak\fP [\fIn\fP]
4051 \fBfor\fP, \fBwhile\fP, \fBuntil\fP, \fBselect\fP のループから抜けます。\fIn\fP が指定されていれば、\fIn\fP レベル分
4052 のループを break します。 \fIn\fP は 1 以上でなければなりません。 \fIn\fP がループの深さよりも大きい場合には、全てのループから抜けます。
4053 \fIn\fP が 1 未満の場合を除けば、返り値は 0 です。
4054 .TP 
4055 \fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
4056 指定されたシェル組み込みコマンドを実行します。コマンドには \fIarguments\fP を引き数として渡し、このコマンドの終了ステータスを返します。
4057 これはシェル組み込みコマンドと同じ名前の関数を定義するときに便利で、 その関数内で組み込みコマンドの機能を使うことができます。 組み込みコマンド
4058 \fBcd\fP は普通、これを使って再定義されます。 \fIshell\-builtin\fP がシェル組み込みコマンドでなければ、終了ステータスは偽となります。
4059 .TP 
4060 \fBcaller\fP [\fIexpr\fP]
4061 実行中のサブルーチン (シェル関数や、組み込みコマンド \fB.\fP か \fBsource\fP で呼び出したスクリプト) 呼び出しのコンテキストを返します。
4062 \fIexpr\fP が指定されていなければ、\fBcaller\fP は 現在のサブルーチン呼び出しの行番号とソースファイル名を表示します \fIexpr\fP
4063 に負でない整数が与えられた場合、\fBcaller\fP は、 現在の呼び出しスタック中で指定した位置の行番号、サブルーチン名、 ソースファイルを表示します。
4064 スタックトレースを表示する場合などに、範囲外の情報が使われるかもしれません。 現在のフレームはフレーム 0 です。
4065 シェルがサブルーチンを呼び出していない場合や、 \fIexpr\fP が呼び出しスタックの有効な位置に相当しない場合を除けば、 返り値は 0 です。
4066 .TP 
4067 \fBcd\fP [\fB\-L\fP|[\fB\-P\fP [\fB\-e\fP]]] [\fIdir\fP]
4068 カレントディレクトリを \fIdir\fP に変更します。 変数
4069 .SM
4070 \fBHOME\fP の値が \fIdir\fP のデフォルト値です。変数
4071 .SM
4072 \fBCDPATH\fP は、 \fIdir\fP を含むディレクトリの検索パスを定義します。
4073 .SM
4074 \fBCDPATH\fP 内では候補ディレクトリ名はコロン
4075 (:) で区切ります。
4076 .SM
4077 \fBCDPATH\fP 中に空のディレクトリ名がある場合、これはカレントディレクトリ (つまり \*(lq\fB.\fP\*(rq)
4078 を意味します。 \fIdir\fP がスラッシュ (/) で始まる場合には、
4079 .SM
4080 \fBCDPATH\fP は使われません。 \fB\-P\fP
4081 オプションは、シンボリックリンクを辿らないで物理的なディレクトリ構造を 使うように指示します (組み込みコマンド \fBset\fP の \fB\-P\fP
4082 オプションも参照)。 \fB\-L\fP オプションを指定すると、シンボリックリンクを辿るようになります。 \fB\-e\fP オプションを \fB\-P\fP
4083 オプションと同時に指定すると、ディレクトリの変更が成功した後に カレントディレクトリが判定できない場合、\fBcd\fP は失敗のステータスを返します。
4084 引き数に \fB\-\fP を指定するのは、
4085 .SM
4086 \fB$OLDPWD\fP を指定するのと同じ意味です。
4087 .SM
4088 \fBCDPATH\fP
4089 内の空以外のディレクトリ名が使われたときや、 \fB\-\fP が最初の引き数のときに、ディレクトリの変更が成功すると、
4090 新しいディレクトリの絶対パス名が標準出力に書かれます。 ディレクトリの変更が成功した場合には返り値は真になり、 そうでない場合には偽になります。
4091 .TP 
4092 \fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...]
4093 \fIcommand\fP に引き数 \fIargs\fP を付けて実行します。ただし、シェル関数の通常の参照は行いません。 組み込みコマンドと
4094 .SM
4095 \fBPATH\fP 内で見つかるコマンドだけが実行されます。 \fB\-p\fP オプションが与えられると、 \fIcommand\fP の検索を行う際に \fBPATH\fP
4096 のデフォルト値が使われます。これにより、 全ての標準ユーティリティを確実に見つけられます。 \fB\-V\fP オプションまたは \fB\-v\fP
4097 オプションを与えると、 \fIcommand\fP の説明が出力されます。 \fB\-v\fP オプションでは、 \fIcommand\fP
4098 を起動するときに使われるコマンドやファイル名を示す単語が表示されます。 \fB\-V\fP ではさらに詳しい説明が表示されます。 \fB\-V\fP オプションや
4099 \fB\-v\fP オプションを与えた場合、終了ステータスは \fIcommand\fP が見つかれば 0 となり、見つからなければ 1 となります。
4100 どちらのオプションも与えなかった場合に、エラーが起きたり、 \fIcommand\fP を見つけられなかったりすると、終了ステータスは 127 になります。
4101 それ以外の場合には、組み込みコマンド \fBcommand\fP の終了ステータスは、 \fIcommand\fP の終了ステータスです。
4102 .TP 
4103 \fBcompgen\fP [\fIoption\fP] [\fIword\fP]
4104 \fIoption\fP に従って、\fIword\fP にマッチする補完候補のリストを生成します。 オプションには \fBcomplete\fP
4105 組み込みコマンドと同じものが指定できますが、 \fB\-p\fP と \fB\-r\fP は指定できません。 マッチのリストは標準出力に出力されます。 \fB\-F\fP や
4106 \fB\-C\fP オプションを使用したときは、 プログラム補完機能によって設定された様々なシェル変数は、 利用可能であっても有用な値を持ちません。
4107 .sp 1
4108 マッチのリストは、同じフラグによる補完仕様で プログラム補完のコードが直接生成したかのように 生成されます。 \fIword\fP
4109 が指定されると、\fIword\fP にマッチする補完だけが表示されます。
4110 .sp 1
4111 戻り値は、 無効なオプションが指定された場合やマッチが生成されなかった場合以外は 真になります。
4112 .TP 
4113 \fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp\-option\fP] [\fB\-DE\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP]
4114 .br
4115 [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname
4116 \&...\fP]
4117 .PD 0
4118 .TP 
4119 \fBcomplete\fP \fB\-pr\fP [\fB\-DE\fP] [\fIname\fP ...]
4120 .PD
4121 各 \fIname\fP の引き数を、どのように補完するのかを指定します。 \fB\-p\fP オプションが指定された場合や、
4122 何もオプションが指定されなかった場合は、 現在の補完仕様が (入力として再利用できる形で) 出力されます。 \fB\-r\fP オプションは、それぞれの
4123 \fIname\fP の補完指定を削除します。 \fIname\fP が指定されなかった場合は全ての補完指定を削除します。 \fB\-D\fP
4124 オプションは、残りのオプションと動作を \*(lqデフォルトの\*(rq コマンド補完 (補完が定義されていないコマンドに対して 試みられる補完)
4125 に適用することを示します。 \fB\-E\fP オプションは、残りのオプションと動作を \*(lq空の\*(rq コマンド補完 (空行に対して試みられる補完)
4126 に適用することを示します。
4127 .sp 1
4128 単語補完が試みられたときに、補完指定が適用される流れは、 前述の \fBプログラム補完\fP で説明されています。
4129 .sp 1
4130 他のオプションは、指定された場合、以下のような意味を持ちます。 \fB\-G\fP, \fB\-W\fP, \fB\-X\fP オプションの引き数 (必要ならば \fB\-P\fP と
4131 \fB\-S\fP オプションの場合も) はクォートして、 組み込みコマンド \fBcomplete\fP が呼び出される前に展開されないようにすべきです。
4132 .RS
4133 .PD 0
4134 .TP  8
4135 \fB\-o\fP \fIcomp\-option\fP
4136 \fIcomp\-option\fP は補完仕様の動作をいくつかの観点から制御し、 単純な補完生成以外ができるようにします。 \fIcomp\-option\fP
4137 には以下のどれかひとつを指定できます。
4138 .RS
4139 .TP  8
4140 \fBbashdefault\fP
4141 補完仕様がマッチを全く生成しなかった場合に、 \fBbash\fP のデフォルトの補完を用います。
4142 .TP  8
4143 \fBdefault\fP
4144 補完仕様がマッチを全く生成しなかった場合に、 readline のデフォルトの補完を用います。
4145 .TP  8
4146 \fBdirnames\fP
4147 補完仕様がマッチを全く生成しなかった場合に、 ディレクトリ名を補完しようとします。
4148 .TP  8
4149 \fBfilenames\fP
4150 補完仕様がファイル名を生成することを readline に伝え、 readline がファイル名特有の処理
4151 (ディレクトリ名にスラッシュを加えたり、特殊文字をクォートしたり、 末尾の空白を削除したり、など) を行えるようにします。
4152 シェル関数と共に用いることを想定しています。
4153 .TP  8
4154 \fBnospace\fP
4155 行末で単語を補完したときに空白を付け加える動作 (デフォルトの動作) を やめるように readline に伝えます。
4156 .TP  8
4157 \fBplusdirs\fP
4158 補完仕様で定義されたマッチした候補が生成された後に、 ディレクトリ名の補完を試み、ほかの動作の結果にマッチした候補が 全て追加されます。
4159 .RE
4160 .TP  8
4161 \fB\-A\fP \fIaction\fP
4162 \fIaction\fP は補完候補リストの生成動作で、 以下のどれかひとつを指定します。
4163 .RS
4164 .TP  8
4165 \fBalias\fP
4166 エイリアス名。\fB\-a\fP でも指定できます。
4167 .TP  8
4168 \fBarrayvar\fP
4169 配列変数名。
4170 .TP  8
4171 \fBbinding\fP
4172 \fBreadline\fP キー割り当て名。
4173 .TP  8
4174 \fBbuiltin\fP
4175 シェル組み込みコマンド名。\fB\-b\fP でも指定できます。
4176 .TP  8
4177 \fBcommand\fP
4178 コマンド名。\fB\-c\fP でも指定できます。
4179 .TP  8
4180 \fBdirectory\fP
4181 ディレクトリ名。\fB\-d\fP でも指定できます。
4182 .TP  8
4183 \fBdisabled\fP
4184 無効にされているシェル組み込みコマンドの名前。
4185 .TP  8
4186 \fBenabled\fP
4187 有効にされているシェル組み込みコマンドの名前。
4188 .TP  8
4189 \fBexport\fP
4190 エクスポートされたシェル変数の名前。 \fB\-e\fP でも指定できます。
4191 .TP  8
4192 \fBfile\fP
4193 ファイル名。\fB\-f\fP でも指定できます。
4194 .TP  8
4195 \fBfunction\fP
4196 シェル関数の名前。
4197 .TP  8
4198 \fBgroup\fP
4199 グループ名。\fB\-g\fP でも指定できます。
4200 .TP  8
4201 \fBhelptopic\fP
4202 組み込みコマンド \fBhelp\fP に指定できるヘルプのトピック名。
4203 .TP  8
4204 \fBhostname\fP
4205 .SM
4206 \fBHOSTFILE\fP シェル変数で指定されたファイルから得られたホスト名。
4207 .TP  8
4208 \fBjob\fP
4209 ジョブ名 (ジョブ制御が有効な場合)。\fB\-j\fP でも指定できます。
4210 .TP  8
4211 \fBkeyword\fP
4212 シェルの予約語。\fB\-k\fP でも指定できます。
4213 .TP  8
4214 \fBrunning\fP
4215 ジョブ制御が有効であれば、実行中のジョブ名。
4216 .TP  8
4217 \fBservice\fP
4218 サービス名。\fB\-s\fP でも指定できます。
4219 .TP  8
4220 \fBsetopt\fP
4221 組み込みコマンド \fBset\fP の \fB\-o\fP オプションで有効な引き数。
4222 .TP  8
4223 \fBshopt\fP
4224 組み込みコマンド \fBshopt\fP に指定できるシェルオプション名。
4225 .TP  8
4226 \fBsignal\fP
4227 シグナル名。
4228 .TP  8
4229 \fBstopped\fP
4230 停止しているジョブ名 (ジョブ制御が有効な場合)。
4231 .TP  8
4232 \fBuser\fP
4233 ユーザ名。\fB\-u\fP でも指定できます。
4234 .TP  8
4235 \fBvariable\fP
4236 全てのシェル変数名。\fB\-v\fP でも指定できます。
4237 .RE
4238 .TP  8
4239 \fB\-C\fP \fIcommand\fP
4240 \fIcommand\fP がサブシェル環境で実行され、 その出力が補完候補として使用されます。
4241 .TP  8
4242 \fB\-F\fP \fIfunction\fP
4243 シェル関数 \fIfunction\fP は現在のシェル環境で実行されます。 関数が終了したときに、補完候補が
4244 .SM
4245 \fBCOMPREPLY\fP
4246 配列変数から取得されます。
4247 .TP  8
4248 \fB\-G\fP \fIglobpat\fP
4249 パス名展開パターン \fIglobpat\fP を展開し、 補完候補のリストを生成します。
4250 .TP  8
4251 \fB\-P\fP \fIprefix\fP
4252 ほかの全てのオプションが適用された後で、 それぞれの補完候補の先頭に \fIprefix\fP が付け加えられます。
4253 .TP  8
4254 \fB\-S\fP \fIsuffix\fP
4255 ほかの全てのオプションが適用された後で、 それぞれの補完候補の後に \fIsuffix\fP が付け加えられます。
4256 .TP  8
4257 \fB\-W\fP \fIwordlist\fP
4258 \fIwordlist\fP は
4259 .SM
4260 \fBIFS\fP 特殊変数に含まれる文字を区切り文字として分割され、 分割された単語がそれぞれ展開されます。
4261 展開結果のリストのメンバのうち、補完中の単語がマッチするものが、 補完候補となります。
4262 .TP  8
4263 \fB\-X\fP \fIfilterpat\fP
4264 \fIfilterpat\fP がパス名展開のパターンとして使用されます。 先行するオプション・引き数によって生成された補完候補のリストに適用され、
4265 \fIfilterpat\fP とマッチするそれぞれの補完候補がリストから削除されます。 \fIfilterpat\fP が \fB!\fP
4266 で始まる場合、パターンの否定の意味になります。 つまり、\fIfilterpat\fP にマッチしない補完対象が削除されます。
4267 .PD
4268 .PP
4269 不正なオプションが指定された場合、\fB\-p\fP と \fB\-r\fP 以外のオプションで \fIname\fP が指定されなかった場合、 存在しない \fIname\fP
4270 の指定によって補完が削除されようとした場合、 補完の指定の追加に失敗した場合、を除いては、返り値は真になります。
4271 .RE
4272 .TP 
4273 \fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DE\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP]
4274 \fIname\fP の補完オプションを \fIoption\fP に従って変更します。 \fIname\fP が指定されない場合は、実行中の補完が対象になります。
4275 \fIoption\fPs が与えられない場合は、\fIname\fP または現在の補完の 補完オプションを表示します。 \fIoption\fP
4276 に指定できる値は、前述の組み込みコマンド \fBcomplete\fP で有効なものです。 \fB\-D\fP オプションは、残りのオプションを \*(lqデフォルトの\*(rq
4277 コマンド補完 (補完が定義されていないコマンドに対して 試みられる補完) に適用することを示します。 \fB\-E\fP オプションは、残りのオプションを
4278 \*(lq空の\*(rq コマンド補完 (空行に対して試みられる補完) に適用することを示します。
4279 .sp 1
4280 不正なオプションが指定された場合、 補完仕様が定義されていない \fIname\fP のオプションを変更しようとした場合、
4281 出力エラーが起こった場合、を除いては、返り値は真になります。
4282 .TP 
4283 \fBcontinue\fP [\fIn\fP]
4284 \fBfor\fP, \fBwhile\fP, \fBuntil\fP, \fBselect\fP ループの次の繰り返し分から実行を継続します。 \fIn\fP を指定すると、深さを
4285 \fIn\fP 個分上がったループで実行を継続します。 \fIn\fP は 1 以上でなければなりません。 \fIn\fP がループの深さよりも大きい場合、 最後のループ
4286 (「トップレベル」のループ) で実行が継続されます。 \fIn\fP が 1 未満の場合を除けば、返り値は 0 です。
4287 .TP 
4288 \fBdeclare\fP [\fB\-aAfFgilrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
4289 .PD 0
4290 .TP 
4291 \fBtypeset\fP [\fB\-aAfFgilrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
4292 .PD
4293 変数を宣言したり、変数に属性を与えたりします。 \fIname\fP を指定しなければ、変数の値が表示されます。 \fB\-p\fP オプションを指定すると、各
4294 \fIname\fP の属性と値が表示されます。 \fB\-p\fP に \fIname\fP 引き数を指定すると、他のオプションは無視されます。 \fB\-p\fP オプションが
4295 \fIname\fP 引き数なしで指定されると、 他のオプションで指定された属性を持っている 全ての変数の属性と値を表示します。 \fB\-p\fP
4296 以外のオプションが指定されない場合、 \fBdeclare\fP は全てのシェル変数の属性と値を表示します。 \fB\-f\fP
4297 オプションは表示をシェル関数に限定します。 \fB\-F\fP オプションを指定すると、関数定義の表示を止めます。 関数の名前と属性だけが出力されます。
4298 \fBshopt\fP によってシェルオプション \fBextdebug\fP が有効になっていれば、
4299 関数が定義されているソースファイルの名前と行番号も表示されます。 \fB\-F\fP オプションを指定すると、 \fB\-f\fP オプションも指定したことになります。
4300 \fB\-g\fP オプションを指定すると、\fBdeclare\fP がシェル関数の中で実行されたときであっても、 グローバルスコープで変数の作成、変更を行います。
4301 ほかの場合には無視されます。 以下のオプションを使うと、 指定した属性を持つ変数の出力を限定したり、 変数に属性を与えたりできます:
4302 .RS
4303 .PD 0
4304 .TP 
4305 \fB\-a\fP
4306 各 \fIname\fP は配列変数です (前述の \fB配列\fP を参照)。
4307 .TP 
4308 \fB\-A\fP
4309 各 \fIname\fP は連想配列変数です (前述の \fB配列\fP を参照)。
4310 .TP 
4311 \fB\-f\fP
4312 関数名だけを使います。
4313 .TP 
4314 \fB\-i\fP
4315 変数を整数として扱います。変数に値が代入されたときに算術式評価 (
4316 .SM
4317 \fB算術式評価\fP を参照) が実行されます。
4318 .TP 
4319 \fB\-l\fP
4320 変数に値が代入されると、全ての大文字は小文字に変換されます。 大文字属性は無効になります。
4321 .TP 
4322 \fB\-r\fP
4323 \fIname\fP を読み込み専用にします。 これ以降、代入文を用いて値を代入したり unset したりできなくなります。
4324 .TP 
4325 \fB\-t\fP
4326 各 \fIname\fP に \fItrace\fP 属性を与えます。 trace 属性を付与された関数は \fBDEBUG\fP と \fBRETURN\fP のトラップを
4327 呼び出したシェルから受け継ぎます trace 属性は変数には意味を持ちません。
4328 .TP 
4329 \fB\-u\fP
4330 変数に値が代入されると、全ての小文字は大文字に変換されます。 小文字属性は無効になります。
4331 .TP 
4332 \fB\-x\fP
4333 \fIname\fP に印を付け、 これ以降に実行するコマンドに環境経由でエクスポートします。
4334 .PD
4335 .PP
4336 `\-' ではなく `+' を使うと属性を消します。 ただし例外として、\fB+a\fP を使って配列変数を破棄することはできず、 \fB+r\fP
4337 を使って読み込み専用属性を消すことはできません。 関数内で使った場合、 \fB\-g\fP オプションが与えられなかった場合、 \fBlocal\fP
4338 コマンドを使った場合と同様に \fIname\fP はローカル変数となります。 変数名に =\fIvalue\fP が続く場合、 変数の値として \fIvalue\fP
4339 が設定されます。 返り値は基本的には 0 ですが、不正なオプションに出会った場合、
4340 .if  n ``\-f foo=bar'',
4341 .if  t \f(CW\-f foo=bar\fP,
4342 を使って関数を定義しようとした場合、 読み込み専用の変数に代入しようとした場合、 複合代入構文を使わずに配列変数に値を代入しようとした場合 (前述の
4343 \fB配列\fP を参照)、\fIname\fP のいずれかが正しいシェル変数名でない場合、 読み込み専用変数の読み込み専用属性を無効にしようとした場合、
4344 配列変数の配列属性を無効にしようとした場合、 存在しない関数を \fB\-f\fP オプションで表示しようとした場合は除きます。
4345 .RE
4346 .TP 
4347 \fBdirs [+\fP\fIn\fP\fB] [\-\fP\fIn\fP\fB] [\-clpv]\fP
4348 オプションがないときは、 現在記憶しているディレクトリのリストが表示されます。 デフォルトでは、全てのディレクトリ名は空白で区切って 1
4349 行で表示されます。 ディレクトリは \fBpushd\fP コマンドによってリストに追加されます。 \fBpopd\fP コマンドはリストからエントリを削除します。
4350 .RS
4351 .PD 0
4352 .TP 
4353 \fB+\fP\fIn\fP
4354 オプションなしで \fBdirs\fP を起動したときに表示されるリストの、 左から数えて \fIn\fP 番目のエントリを表示します。 エントリは 0
4355 から始まります。
4356 .TP 
4357 \fB\-\fP\fIn\fP
4358 オプションなしで \fBdirs\fP を起動したときに表示されるリストの、 右から数えて \fIn\fP 番目のエントリを表示します。 エントリは 0
4359 から始まります。
4360 .TP 
4361 \fB\-c\fP
4362 全てのエントリを削除し、ディレクトリスタックをクリアします。
4363 .TP 
4364 \fB\-l\fP
4365 長い形式のリスト表示を行います。 デフォルトのリスト表示フォーマットでは、 チルダを使ってホームディレクトリを表します。
4366 .TP 
4367 \fB\-p\fP
4368 1 行に 1 エントリの形でディレクトリスタックを出力します。
4369 .TP 
4370 \fB\-v\fP
4371 1 行に 1 エントリの形でディレクトリスタックを出力します。 各エントリの前にはスタック内での番号が表示されます。
4372 .PD
4373 .PP
4374 不正なオプションが与えられた場合とインデックス \fIn\fP がディレクトリスタックの末尾を越えている場合を除き、 返り値は 0 となります。
4375 .RE
4376 .TP 
4377 \fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...]
4378 オプションなしの場合には、それぞれの \fIjobspec\fP がアクティブなジョブのテーブルから削除されます。 \fIjobspec\fP がなく、かつ
4379 \fB\-a\fP オプションも \fB\-r\fP オプションも 与えられていない場合には、\fIカレントジョブ\fPが使われます。 \fB\-h\fP
4380 オプションが与えられている場合、どの \fIjobspec\fP もテーブルから削除されず、 シェルが
4381 .SM
4382 \fBSIGHUP\fP
4383 を受け取ってもそのジョブには
4384 .SM
4385 \fBSIGHUP\fP が送られないように印が付けられます。 \fIjobspec\fP が与えられていない場合、
4386 \fB\-a\fP オプションは全てのジョブを削除するか 全てのジョブに印を付けるという意味 となります。 \fIjobspec\fP 引き数なしで \fB\-r\fP
4387 オプションを指定すると、 実行中のジョブだけが操作の対象となります。 \fIjobspec\fP が有効なジョブを指定していない場合を除き、返り値は 0
4388 となります。
4389 .TP 
4390 \fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...]
4391 \fIarg\fP を空白で区切って出力し、最後に改行を出力します。 終了ステータスは常に 0 です。 \fB\-n\fP
4392 が指定された場合、最後の改行は出力されません。 \fB\-e\fP オプションを指定した場合、
4393 以下に示す、バックスラッシュのエスケープ文字が解釈されるようになります。 \fB\-E\fP オプションを指定すると、
4394 デフォルトでこのようなエスケープ文字が解釈されるシステムであっても、 エスケープ文字が解釈されないようになります。 \fBxpg_echo\fP
4395 シェルオプションを用いると、 \fBecho\fP がこれらのエスケープ文字を展開するかどうかの デフォルト動作を動的に決定できます。 \fBecho\fP は
4396 \fB\-\-\fP をオプションの終わりと解釈しません。 \fBecho\fP は以下のエスケープシーケンスを解釈します:
4397 .RS
4398 .PD 0
4399 .TP 
4400 \fB\ea\fP
4401 警告 (ベル)
4402 .TP 
4403 \fB\eb\fP
4404 バックスペース
4405 .TP 
4406 \fB\ec\fP
4407 行末に改行を付けない
4408 .TP 
4409 \fB\ee\fP
4410 .TP 
4411 \fB\eE\fP
4412 エスケープ文字
4413 .TP 
4414 \fB\ef\fP
4415 フォームフィード
4416 .TP 
4417 \fB\en\fP
4418 改行
4419 .TP 
4420 \fB\er\fP
4421 復帰 (carriage return)
4422 .TP 
4423 \fB\et\fP
4424 水平タブ
4425 .TP 
4426 \fB\ev\fP
4427 垂直タブ
4428 .TP 
4429 \fB\e\e\fP
4430 バックスラッシュ
4431 .TP 
4432 \fB\e0\fP\fInnn\fP
4433 8 進値で \fInnn\fP である 8 ビット文字 (8 進数で 0〜3 桁)。
4434 .TP 
4435 \fB\ex\fP\fIHH\fP
4436 16 進値が \fIHH\fP である 8 ビット文字 (16 進で 1〜2 桁)。
4437 .TP 
4438 \fB\eu\fP\fIHHHH\fP
4439 16 進値が \fIHHHH\fP であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜4 桁)。
4440 .TP 
4441 \fB\eU\fP\fIHHHHHHHH\fP
4442 16 進値が \fIHHHHHHHH\fP であるユニコード (ISO/IEC 10646) 文字 (16 進 1〜8 桁)。
4443 .PD
4444 .RE
4445 .TP 
4446 \fBenable\fP [\fB\-a\fP] [\fB\-dnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...]
4447 組み込みコマンドの有効/無効を設定します。 シェルは通常はディスクコマンドの前に組み込みコマンドを探しますが、 組み込みコマンドを無効にすると、
4448 シェルの組み込みコマンドと同じ名前を持つディスクコマンドを、 完全なパス名を指定しなくても実行できます。 \fB\-n\fP を用いると、それぞれの
4449 \fIname\fP は無効となります。 それ以外の場合には、\fIname\fP は有効となります。 例えば、シェル組み込みのものでなく
4450 .SM
4451 \fBPATH\fP 上にある \fBtest\fP バイナリを使うには
4452 .if  t \f(CWenable -n test\fP.
4453 .if  n ``enable -n test''.
4454 を実行します。 \fB\-f\fP オプションは新しい組み込みコマンド \fIname\fP を共有オブジェクト \fIfilename\fP
4455 からロードするという意味です。 これは動的ロードをサポートしているシステムで使えます。 \fB\-d\fP オプションは、以前に \fB\-f\fP
4456 オプションでロードした組み込みコマンドを削除します。 引き数 \fIname\fP が与えられなかった場合や、 \fB\-p\fP オプションが与えられた場合、
4457 シェルの組み込みコマンドのリストが表示されます。 他にオプション引き数が指定されていない場合には、
4458 有効になっているシェル組み込みコマンド全てからなるリストが表示されます。 \fB\-n\fP を与えると、無効にされている組み込みコマンドだけが出力されます。
4459 \fB\-a\fP を与えると、 それぞれ有効かどうかの表示付きで全ての組み込みコマンドが出力されます。 \fB\-s\fP を与えると、出力されるのは POSIX
4460 の\fI特殊\fP組み込みコマンドだけに制限されます。 \fIname\fP がシェル組み込みコマンドでない場合と、
4461 共有オブジェクトからの新しい組み込みコマンドのロードに失敗した場合を除き、 返り値は 0 となります。
4462 .TP 
4463 \fBeval\fP [\fIarg\fP ...]
4464 \fIarg\fP を読み込み、1 つのコマンドに結合し、 このコマンドを読み込んで実行します。 その終了ステータスが \fBeval\fP の値として返されます。
4465 \fIargs\fP がない場合や空の引き数しかない場合には \fBeval\fP は 0 を返します。
4466 .TP 
4467 \fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]]
4468 \fIcommand\fP が指定されていると、シェルはこのコマンドに置き換えられます。 新しいプロセスは生成されません。 \fIarguments\fP は
4469 \fIcommand\fP に対する引き数となります。 \fB\-l\fP オプションを与えると、シェルは \fIcommand\fP に渡す 0
4470 番目のオプションの先頭にダッシュを設定します。 これは \fIlogin\fP(1)  が行う動作です。 \fB\-c\fP オプションを与えると、
4471 \fIcommand\fP は空の環境で実行されます。 \fB\-a\fP を与えると、シェルは実行するコマンドに 0 番目の引き数として \fIname\fP
4472 を渡します。何らかの理由で \fIcommand\fP が実行できない場合には非対話的シェルは終了します。 ただしシェルオプション \fBexecfail\fP
4473 が設定されている場合は終了せず、この場合には偽が返されます。 ファイルが実行できない場合には、対話的シェルは偽を返します。 \fIcommand\fP
4474 が指定されていない場合、任意のリダイレクトはカレントシェルで効果を持ち、 終了ステータスは 0 となります。
4475 リダイレクトのエラーが起きた場合には、終了ステータスは 1 となります。
4476 .TP 
4477 \fBexit\fP [\fIn\fP]
4478 ステータス \fIn\fP でシェルを終了させます。 \fIn\fP を省略すると、 終了ステータスは最後に実行したコマンドの終了ステータスとなります。
4479 シェルが終了する前には、
4480 .SM
4481 \fBEXIT\fP に対するトラップが実行されます。
4482 .TP 
4483 \fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ...
4484 .PD 0
4485 .TP 
4486 \fBexport \-p\fP
4487 .PD
4488 指定された \fIname\fP には印が付けられ、 これ以降に実行するコマンドの環境に 自動的にエクスポートされるようになります。 \fB\-f\fP
4489 オプションを与えると、 \fIname\fP は関数を参照します。 \fIname\fP を与えなかった場合や、 \fB\-p\fP オプションを与えた場合には、
4490 このシェル内でエクスポートされている全ての名前のリストが出力されます。 \fB\-n\fP
4491 オプションを与えると、指定した変数からエクスポート属性が取り除かれます。 変数名に =\fIword\fP が続くと、変数の値に \fIword\fP
4492 が設定されます。 不正なオプションがあった場合、 \fIname\fP のいずれかが不正なシェル変数名であった場合、 関数でない名前に対して \fB\-f\fP
4493 オプションを与えた場合を除き、 \fBexport\fP は終了ステータス 0 を返します。
4494 .TP 
4495 \fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-lnr\fP] [\fIfirst\fP] [\fIlast\fP]
4496 .PD 0
4497 .TP 
4498 \fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP]
4499 .PD
4500 フィックスコマンド (Fix Command)。 最初の形式では、 \fIfirst\fP から \fIlast\fP
4501 までの範囲のコマンドが履歴リストから選択されます。 \fIfirst\fP と \fIlast\fP には文字列か数値を指定します。
4502 文字列はその文字列で始まる最後のコマンドを表し、 数値は履歴リスト中でのインデックスを表します
4503 (負の値は現在のコマンド番号からのオフセットとして扱われます)。 \fIlast\fP が指定されていない場合、リスト表示の場合には 現在のコマンドが
4504 \fIlast\fP に設定され (したがって
4505 .if  n ``fc \-l \-10''
4506 .if  t \f(CWfc \-l \-10\fP
4507 で最近のコマンド 10 個が出力されます)、それ以外の場合には \fIfirst\fP が設定されます。 \fIfirst\fP
4508 が指定されていなければ、編集の場合には前のコマンドが \fIfirst\fP に設定され、 リスト表示の場合には \-16 が設定されます。
4509 .sp 1
4510 \fB\-n\fP オプションを与えるとリスト表示でコマンド番号が付きません。 \fB\-r\fP オプションを与えるとコマンドの順序が逆になります。 \fB\-l\fP
4511 オプションを与えると、コマンドは標準出力にリスト表示されます。 それ以外の場合には、これらのコマンドが書かれたファイルに対し、 \fIename\fP
4512 で指定したエディタが起動されます。 \fIename\fP が与えられていない場合は、変数
4513 .SM
4514 \fBFCEDIT\fP の値が使われ、
4515 .SM
4516 \fBFCEDIT\fP も設定されていない場合には
4517 .SM
4518 \fBEDITOR\fP の値が使われます。 どちらの変数も設定されていなければ、
4519 .FN vi
4520 が使われます。 編集が終了すると、編集後のコマンドがエコー表示され、実行されます。
4521 .sp 1
4522 2 番目の形式では、\fIpat\fP の部分をそれぞれ \fIrep\fP で置き換えてから \fIcommand\fP が再実行されます。
4523 これを利用している便利なエイリアスの例として
4524 .if  n ``r="fc -s"'',
4525 .if  t \f(CWr='fc \-s'\fP,
4526 があります。 これを用いると
4527 .if  n ``r cc''
4528 .if  t \f(CWr cc\fP
4529 と入力すれば
4530 .if  n ``cc''
4531 .if  t \f(CWcc\fP
4532 で始まる最も新しいコマンドを実行でき、
4533 .if  n ``r''
4534 .if  t \f(CWr\fP
4535 と入力すれば直前のコマンドを再実行できます。
4536 .sp 1
4537 最初の形式を用いた場合、不正なオプションがあるか、 \fIfirst\fP または \fIlast\fP が履歴行の範囲外を指定していなければ、返り値は 0
4538 となります。 \fB\-e\fP オプションが与えられた場合、 返り値は最後に実行されたコマンドの返り値となります。
4539 ただし、コマンドの一時ファイルでエラーが起きた場合には返り値は偽 (失敗) となります。 2 番目の形式を用いた場合、
4540 終了ステータスは再実行されたコマンドの終了ステータスとなります。 ただし、 \fIcmd\fP が有効な履歴行を指定していない場合は、 \fBfc\fP は偽
4541 (失敗) を返します。
4542 .TP 
4543 \fBfg\fP [\fIjobspec\fP]
4544 \fIjobspec\fP の実行をフォアグラウンドで再開し、これをカレントジョブとします。 \fIjobspec\fP
4545 がない場合、シェルが記録している\fIカレントジョブ\fPが使われます。 返り値はフォアグラウンドで再開されたコマンドの返り値ですが、
4546 ジョブ制御が無効であるときに実行した場合や、 ジョブ制御が有効であっても \fIjobspec\fP が有効なジョブを指定していない場合や
4547 \fIjobspec\fP がジョブ制御なしで実行したジョブを指定している場合には偽となります。
4548 .TP 
4549 \fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP]
4550 \fBgetopts\fP は位置パラメータを解釈するシェルの処理で使います。 \fIoptstring\fP は識別の対象であるオプション文字列です。
4551 ある文字の後にコロンがある場合、 そのオプションは引き数を一つ取ることが期待されます。 引き数は空白でオプション文字と区切られていなければなりません。
4552 コロンと疑問符はオプション文字として使えません。 呼び出されるたびに、 \fBgetopts\fP は次に見つかったオプションをシェル変数 \fIname\fP
4553 に格納し (\fIname\fP が存在しなければ初期化を行います)、 次に処理される引き数のインデックスを変数
4554 .SM
4555 \fBOPTIND\fP
4556 に格納します。
4557 .SM
4558 \fBOPTIND\fP はシェルまたはシェルスクリプトが呼び出されるたびに 1 に初期化されます。
4559 オプションが引き数を必要とする場合には、 \fBgetopts\fP はその引き数を変数
4560 .SM
4561 \fBOPTARG\fP に格納します。 シェルが
4562 .SM
4563 \fBOPTIND\fP を自動的に再設定することはありません。 1 つのシェルが呼び出されている間に別のパラメータの組み合わせを使う場合には、
4564 再度 \fBgetopts\fP を呼び出す前に手動で \fBOPTIND\fP の再設定を行わなければなりません。
4565 .sp 1
4566 オプションの終わりに到達すると、 \fBgetopts\fP は 0 より大きい返り値で終了します。
4567 .SM
4568 \fBOPTIND\fP
4569 にはオプションでない最初の引き数のインデックスが設定され、 \fIname\fP には ? が設定されます。
4570 .sp 1
4571 \fBgetopts\fP は通常位置パラメータを展開しますが、他の引き数が \fIargs\fP に指定されている場合には、 \fBgetopts\fP
4572 は位置パラメータでなくこれらの引き数を解釈対象とします。
4573 .sp 1
4574 \fBgetopts\fP は 2 通りの方法でエラーを報告します。 \fIoptstring\fP の最初の文字がコロンならば、 \fI静かな (silent)\fP
4575 エラー報告が行われます。 通常の動作では、不正なオプションがある場合や オプションの引き数が足りない場合に診断メッセージが出力されます。 変数
4576 .SM
4577 \fBOPTERR\fP に 0 が設定されている場合、 \fIoptstring\fP の最初の文字がコロンでない場合であっても、
4578 エラーメッセージは全く出力されません。
4579 .sp 1
4580 不正なオプションがあった場合、 \fBgetopts\fP は ? を \fIname\fP に設定します。
4581 さらに、静かなモードでない場合にはエラーメッセージが出力され、
4582 .SM
4583 \fBOPTARG\fP が削除されます。 \fBgetopts\fP
4584 が静かなモードであれば、見つかったオプション文字は
4585 .SM
4586 \fBOPTARG\fP に設定され、診断メッセージは出力されません。
4587 .sp 1
4588 必要な引き数が見つからず、かつ \fBgetopts\fP が静かなモードでない場合には、疑問符 (\^\fB?\fP\^) が \fIname\fP に設定され、
4589 .SM
4590 \fBOPTARG\fP が削除され、診断メッセージが出力されます。 \fBgetopts\fP が静かなモードならば、コロン (\^\fB:\fP\^)
4591 が \fIname\fP に設定され、
4592 .SM
4593 \fBOPTARG\fP には見つかったオプション文字が設定されます。
4594 .sp 1
4595 (指定の有無に関係なく) オプションが見つかった場合、 \fBgetopts\fP は真を返します。
4596 オプションの最後に到達した場合や、エラーが起きた場合には、 偽を返します。
4597 .TP 
4598 \fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP]
4599 \fBhash\fP が実行される度に、 \fB$PATH\fP に含まれるディレクトリの検索を行ってコマンド \fIname\fP の完全なパス名を調べ、
4600 その結果を記憶します。 それまでに記憶されていたパス名は捨てられます。 \fB\-p\fP オプションが指定されると、パス検索は実行されず、
4601 \fIfilename\fP がそのコマンドの完全なファイル名として使われます。 \fB\-r\fP オプションを与えると、シェルは記憶しているパス名を全て忘れます。
4602 \fB\-d\fP オプションを与えると、シェルは各 \fIname\fP について記憶しているパス名を忘れます。 \fB\-t\fP オプションを与えると、\fIname\fP
4603 に対応する完全なファイル名が表示されます。 \fB\-t\fP に複数の \fIname\fP 引き数が指定された場合、 記憶されている完全なファイル名の前に
4604 \fIname\fP が表示されます。 \fB\-l\fP オプションを与えると、入力として再利用できる形で出力されます。 引き数が与えられていない場合や、\fB\-l\fP
4605 だけが与えられた場合は、 記憶しているコマンドに関する情報が出力されます。 \fIname\fP が見つからない場合と不正なオプションが与えられた場合を除き、
4606 返却ステータスは真となります。
4607 .TP 
4608 \fBhelp\fP [\fB\-dms\fP] [\fIpattern\fP]
4609 組み込みコマンドのヘルプ情報を表示します。 \fIpattern\fP が指定された場合には、 \fBhelp\fP は \fIpattern\fP
4610 にマッチする全てのコマンドに関する詳しいヘルプを出力します。 指定されなかった場合には、 全ての組み込みコマンドと制御構造についての説明が出力されます。
4611 .RS
4612 .PD 0
4613 .TP 
4614 \fB\-d\fP
4615 \fIpattern\fP それぞれの短い説明を表示します。
4616 .TP 
4617 \fB\-m\fP
4618 \fIpattern\fP それぞれの説明を manpage 風のフォーマットで表示します。
4619 .TP 
4620 \fB\-s\fP
4621 \fIpattern\fP それぞれの短い書式のみを表示します。
4622 .PD
4623 .PP
4624 \fIpattern\fP にマッチするコマンドが全くない場合を除き、返却ステータスは 0 です。
4625 .RE
4626 .TP 
4627 \fBhistory [\fP\fIn\fP\fB]\fP
4628 .PD 0
4629 .TP 
4630 \fBhistory\fP \fB\-c\fP
4631 .TP 
4632 \fBhistory \-d\fP \fIoffset\fP
4633 .TP 
4634 \fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
4635 .TP 
4636 \fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
4637 .TP 
4638 \fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP]
4639 .PD
4640 オプションがない場合には、行番号付きでコマンド履歴を表示します。 \fB*\fP 付きでリスト表示されている行は変更された行です。 引き数 \fIn\fP
4641 を指定すると、最新の \fIn\fP 行だけがリスト表示されます。 シェル変数
4642 .SM
4643 \fBHISTTIMEFORMAT\fP
4644 に空でない値が設定されると、履歴エントリを表示するときに タイムスタンプを表示するための \fIstrftime\fP(3) の書式文字列 として使われます。
4645 タイムスタンプと履歴行の間には空白は表示されません。 \fIfilename\fP が指定されている場合、 履歴ファイルの名前として使われます。
4646 指定されていない場合には
4647 .SM
4648 \fBHISTFILE\fP の値が使われます。指定された場合、オプションは以下の意味を持ちます:
4649 .RS
4650 .PD 0
4651 .TP 
4652 \fB\-c\fP
4653 全てのエントリを削除し、履歴リストをクリアします。
4654 .TP 
4655 \fB\-d\fP \fIoffset\fP
4656 \fIoffset\fP 番目にある履歴エントリを削除します。
4657 .TP 
4658 \fB\-a\fP
4659 「新しい」履歴行 (\fBbash\fP の現在のセッションの開始以降に入力された履歴行)  を履歴ファイルに追加します。
4660 .TP 
4661 \fB\-n\fP
4662 まだ履歴ファイルから読み込んでいない履歴行を 現在の履歴リストに読み込みます。 読み込まれるのは、\fBbash\fP の現在のセッションの開始以降に
4663 履歴ファイルに追加された行です。
4664 .TP 
4665 \fB\-r\fP
4666 履歴ファイルの内容を読み込み、これらを現在の履歴として用います。
4667 .TP 
4668 \fB\-w\fP
4669 現在の履歴を履歴ファイルに書き込みます。履歴ファイルの内容は上書きされます。
4670 .TP 
4671 \fB\-p\fP
4672 後に続く \fIargs\fP に対して履歴置換を行い、 その結果を標準出力に表示します。 この結果は履歴リストには格納されません。
4673 通常の履歴展開が行われないようにするため、 \fIarg\fP はそれぞれクォートしなければなりません。
4674 .TP 
4675 \fB\-s\fP
4676 \fIargs\fP を 1 つのエントリとして履歴リストに格納します。 履歴リストの最後のコマンドは、 \fIargs\fP が追加される前に削除されます。
4677 .PD
4678 .PP
4679 .SM
4680 \fBHISTTIMEFORMAT\fP 変数が設定されていると、履歴エントリのタイムスタンプの情報は、
4681 履歴のコメント文字を付けて履歴ファイルに書き込まれます。 履歴ファイルを読み込むときに、履歴のコメント文字で始まり直後に数字が続く行は、
4682 直前の履歴行のタイムスタンプとして解釈されます。 不正なオプションがある場合、 履歴ファイルの読み書き時にエラーが起きた場合、 \fB\-d\fP
4683 オプションの引き数として不正な \fIoffset\fP の値が与えられた場合、 \fB\-p\fP オプションの引き数として与えられた履歴展開が失敗した場合を除き、
4684 返り値は 0 になります。
4685 .RE
4686 .TP 
4687 \fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ]
4688 .PD 0
4689 .TP 
4690 \fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ]
4691 .PD
4692 最初の形式を実行すると、アクティブなジョブがリスト表示されます。 オプションは以下の意味を持ちます:
4693 .RS
4694 .PD 0
4695 .TP 
4696 \fB\-l\fP
4697 通常の情報に加えて、プロセス ID をリスト表示します。
4698 .TP 
4699 \fB\-n\fP
4700 ユーザがステータスを最後に通知されて以降に、 ステータスの変更があったジョブに関する情報だけを表示します。
4701 .TP 
4702 \fB\-p\fP
4703 そのジョブが属するプロセスグループのリーダーのプロセス ID だけを表示します。
4704 .TP 
4705 \fB\-r\fP
4706 実行中のジョブだけを出力します。
4707 .TP 
4708 \fB\-s\fP
4709 停止中のジョブだけを出力します。
4710 .PD
4711 .PP
4712 \fIjobspec\fP が指定された場合、 そのジョブに関する情報だけが出力されます。 不正なオプションがある場合や、不正な \fIjobspec\fP
4713 が与えられた場合を除き、返却ステータスは 0 です。
4714 .PP
4715 \fB\-x\fP オプションが指定されると、 \fBjobs\fP は \fIcommand\fP や \fIargs\fP 中の \fIjobspec\fP
4716 を対応するプロセスのグループ ID で置き換え、 \fIcommand\fP に \fIargs\fP を与えて実行し、その終了ステータスを返します。
4717 .RE
4718 .TP 
4719 \fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ...
4720 .PD 0
4721 .TP 
4722 \fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP]
4723 .PD
4724 \fIsigspec\fP または \fIsignum\fP で指定されたシグナルを、 \fIpid\fP または \fIjobspec\fP で指定されたプロセスに送ります。
4725 \fIsigspec\fP は、
4726 .SM
4727 \fBSIGKILL\fP のようなシグナル名 (先頭の
4728 .SM
4729 \fBSIG\fP
4730 は省略可能)、またはシグナルの番号です。 \fIsignum\fP はシグナルの番号です。 \fIsigspec\fP が存在しない場合には、
4731 .SM
4732 \fBSIGTERM\fP が指定されたものとします。 引き数に \fB\-l\fP を与えるとシグナル名がリスト表示されます。 \fB\-l\fP
4733 と同時に引き数を与えると、 引き数に対応するシグナルの名前がリスト表示され、 返却ステータスは 0 となります。 \fB\-l\fP に対する引き数
4734 \fIexit_status\fP は、 シグナル番号、またはシグナルによって終了させられた プロセスの終了ステータスを指定する数です。 少なくとも 1
4735 つのシグナルを正常に送れた場合、 \fBkill\fP は真を返します。 エラーが起きた場合や不正なオプションがあった場合には、 \fBkill\fP
4736 は偽を返します。
4737 .TP 
4738 \fBlet\fP \fIarg\fP [\fIarg\fP ...]
4739 各 \fIarg\fP は評価を行う算術式です
4740 .SM
4741 (\fB算術式展開\fP を参照)。 最後の \fIarg\fP を評価した結果が 0 であれば、
4742 \fBlet\fP は 1 を返します。 それ以外の場合には 0 が返されます。
4743 .TP 
4744 \fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...]
4745 それぞれの引き数に対して \fIname\fP という名前のローカル変数が生成され、 \fIvalue\fP が代入されます。 \fIoption\fP には、
4746 \fBdeclare\fP コマンドに使えるオプションが全て使えます。 関数内で \fBlocal\fP を使った場合、この変数 \fIname\fP
4747 の可視スコープは、この関数とこの関数の子に制限されます。 オペランドがない場合、 \fBlocal\fP はローカル変数の一覧を標準出力に出力します。
4748 関数の内部以外で \fBlocal\fP を使うとエラーになります。 \fBlocal\fP が関数の外部で使われた場合、 不正な \fIname\fP
4749 が与えられた場合、 \fIname\fP が読み取り専用の変数であった場合以外は、 \fBlocal\fP の返却ステータスは 0 となります。
4750 .TP 
4751 \fBlogout\fP
4752 ログインシェルを終了します。
4753 .TP 
4754 \fBmapfile\fP [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP]
4755 .PD 0
4756 .TP 
4757 \fBreadarray\fP [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP]
4758 .PD
4759 標準入力の各行を配列変数 \fIarray\fP に読み込みます。 \fB\-u\fP オプションが指定されたときは、ファイル・ディスクリプター \fIfd\fP
4760 から読み込みます。 変数
4761 .SM
4762 \fBMAPFILE\fP がデフォルトの \fIarray\fP です。
4763 オプションが指定された場合、以下の意味を持ちます:
4764 .RS
4765 .PD 0
4766 .TP 
4767 \fB\-n\fP
4768 最大 \fIcount\fP 行をコピーします。\fIcount\fP が 0 であれば、全ての行をコピーします。
4769 .TP 
4770 \fB\-O\fP
4771 \fIarray\fP のインデックス \fIorigin\fP から代入を始めます。デフォルトのインデックスは 0 です。
4772 .TP 
4773 \fB\-s\fP
4774 最初の \fIcount\fP 行を読み捨てます。
4775 .TP 
4776 \fB\-t\fP
4777 読み込んだ各行の末尾にある改行文字を削除します。
4778 .TP 
4779 \fB\-u\fP
4780 標準入力の代わりにファイル・ディスクリプター \fIfd\fP から行を読み込みます。
4781 .TP 
4782 \fB\-C\fP
4783 \fIquantum\fP 行が読み込まれるごとに \fIcallback\fP を評価します。\fB\-c\fP オプションで \fIquantum\fP を指定します。
4784 .TP 
4785 \fB\-c\fP
4786 \fIcallback\fP を呼び出す間隔の行数を指定します。
4787 .PD
4788 .PP
4789 \fB\-c\fP なしで \fB\-C\fP が指定されたとき、デフォルトの間隔は 5000 です。 \fIcallback\fP が評価されるとき、
4790 次に代入される配列要素のインデックスと、 その要素に代入される行が、引き数として与えられます。 \fIcallback\fP は、行が読み込まれてから
4791 配列の要素に代入されるまでの間に評価されます。
4792 .PP
4793 始点が明示的に指定されない場合、\fBmapfile\fP は値を代入する前に \fIarray\fP をクリアします。
4794 .PP
4795 \fBmapfile\fP は、 不正なオプションやオプション引き数が指定された場合や、 \fIarray\fP が不正か代入できない場合や、 \fIarray\fP
4796 がインデックスによる配列でない場合でなければ、 成功の状態を返します。
4797 .RE
4798 .TP 
4799 \fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
4800 ディレクトリスタックからエントリを削除します。 引き数がない場合には、スタック先頭のディレクトリが削除され、 新しく先頭となったディレクトリへの
4801 \fBcd\fP が実行されます。 引き数が指定された場合には、これは以下の意味を持ちます:
4802 .RS
4803 .PD 0
4804 .TP 
4805 \fB\-n\fP
4806 スタックからディレクトリを削除する際に、 通常のディレクトリ変更を行いません。 したがって、スタックだけが操作されます。
4807 .TP 
4808 \fB+\fP\fIn\fP
4809 \fBdirs\fP で表示されるリストの左から数えて \fIn\fP 番目のエントリを削除します。 エントリは 0 から数えます。例えば、
4810 .if  n ``popd +0''
4811 .if  t \f(CWpopd +0\fP
4812 は最初のディレクトリを削除し、
4813 .if  n ``popd +1''
4814 .if  t \f(CWpopd +1\fP
4815 は 2 番目のディレクトリを削除します。
4816 .TP 
4817 \fB\-\fP\fIn\fP
4818 \fBdirs\fP で表示されるリストの右から数えて \fIn\fP 番目のエントリを削除します。 エントリは 0 から数えます。例えば、
4819 .if  n ``popd -0''
4820 .if  t \f(CWpopd -0\fP
4821 は最後のディレクトリを削除し、
4822 .if  n ``popd -1''
4823 .if  t \f(CWpopd -1\fP
4824 は最後の 1 つ前のディレクトリを削除します。
4825 .PD
4826 .PP
4827 \fBpopd\fP コマンドが成功した場合、 \fBdirs\fP も実行され、返却ステータスは 0 となります。 \fBpopd\fP
4828 が偽を返すのは、不正なオプションがあった場合、 ディレクトリスタックが空の場合、 ディレクトリスタックの存在しないエントリが指定された場合、
4829 ディレクトリ変更に失敗した場合です。
4830 .RE
4831 .TP 
4832 \fBprintf\fP [\fB\-v\fP \fIvar\fP] \fIformat\fP [\fIarguments\fP]
4833 \fIarguments\fP を整形して標準出力に書き出します。 フォーマットは \fIformat\fP で制御します。 \fB\-v\fP
4834 オプションが与えられると、標準出力に書き出す代わりに、 変数 \fIvar\fP に代入されます。
4835 .sp 1
4836 \fIformat\fP は 3 つのタイプのオブジェクトを含む文字列です。 3 つのオブジェクトとは、普通の文字 (そのまま標準出力にコピーされる)、
4837 文字エスケープシーケンス (変換されて標準出力にコピーされる)、 表示フォーマット指定 (\fIformat\fP の後に続く各引き数 \fIargument\fP
4838 の表示を行う)、です。 \fIprintf\fP(1) 標準のフォーマット指定以外に、以下の拡張フォーマットが使えます。
4839 .RS
4840 .PD 0
4841 .TP 
4842 \fB%b\fP
4843 \fBprintf\fP は対応する \fIargument\fP 中の バックスラッシュのエスケープシーケンスを展開します。 ただし、\fB\ec\fP
4844 で出力を終了し、\fB\e\(aq\fP, \fB\e"\fP, \fB\e?\fP のバックスラッシュは削られず、 \fB\e0\fP で始まる 8
4845 進数のエスケープシーケンスは 4 桁までです。
4846 .TP 
4847 \fB%q\fP
4848 \fBprintf\fP は対応する \fIargument\fP をシェルの入力として再利用できるフォーマットで出力します。
4849 .TP 
4850 \fB%(\fP\fIdatefmt\fP\fB)T\fP
4851 \fBprintf\fP は \fIdatefmt\fP を \fIstrftime\fP(3)  の書式文字列として使って日付と時刻の文字列を出力します。 対応する
4852 \fIargument\fP は、紀元 (1970年 1 月 1 日 00:00:00 UTC)  からの秒数を表す整数値です。\fIargument\fP には
4853 2 つの特別な値が使えます。 \-1 は現在時刻を表します。\-2 はシェルが起動した時刻を表します。
4854 .PD
4855 .PP
4856 文字列でないフォーマット指定に対する引き数は、C の定数として扱われます。 ただし、先頭のプラスとマイナスの記号は許されます。
4857 また、先頭の文字がシングルクォートやダブルクォートであれば、 続く文字の ASCII コードの値が引き数の値となります。
4858 .PP
4859 \fIformat\fP は必要に応じて再利用され、 全ての \fIarguments\fP を処理します。 与えられたよりも多くの \fIarguments\fP を
4860 \fIformat\fP が必要とする場合、余分のフォーマット指定は、 0 と空文字列のうち、適切な方が指定されたかのように動作します。
4861 成功した場合の返り値は 0 で、失敗した場合の返り値は 0 以外です。
4862 .RE
4863 .TP 
4864 \fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP]
4865 .PD 0
4866 .TP 
4867 \fBpushd\fP [\fB\-n\fP] [\fIdir\fP]
4868 .PD
4869 ディレクトリをディレクトリのスタックに追加するか、 スタックをローテートさせます。 このとき、新しいスタックの最も上にあるものを
4870 カレントの作業ディレクトリにします。 引き数を与えなければ、 一番上の 2 つのディレクトリを交換し、0 を返します。
4871 ただし、ディレクトリスタックが空の場合を除きます。 引き数を与えた場合には、以下の意味を持ちます:
4872 .RS
4873 .PD 0
4874 .TP 
4875 \fB\-n\fP
4876 ディレクトリをスタックに追加したときに、 通常のディレクトリ変更を行いません。 したがって、スタックだけが操作されます。
4877 .TP 
4878 \fB+\fP\fIn\fP
4879 スタックをローテートさせ、\fIn\fP 番目のディレクトリを一番上にします。 このとき \fBdirs\fP が表示するリストは左から数え始め、その左端は 0
4880 となります。
4881 .TP 
4882 \fB\-\fP\fIn\fP
4883 スタックをローテートさせ、\fIn\fP 番目のディレクトリを一番上にします。 このとき \fBdirs\fP が表示するリストは右から数え始め、その右端は 0
4884 となります。
4885 .TP 
4886 \fIdir\fP
4887 \fIdir\fP をディレクトリスタックの一番上に追加し、 そのディレクトリを新しいカレントの作業ディレクトリにします。
4888 .PD
4889 .PP
4890 \fBpushd\fP コマンドが成功すると、 \fBdirs\fP コマンドも実行されます。 2 番目の形式を使った場合、 \fIdir\fP への cd
4891 が失敗しなければ、 \fBpushd\fP は 0 を返します。 最初の形式を使った場合には、 ディレクトリスタックが空の場合、
4892 ディレクトリスタックの存在しない要素が指定された場合、 指定された新しいカレントディレクトリへの ディレクトリ変更が失敗した場合以外は、
4893 \fBpushd\fP は基本的には 0 を返します。
4894 .RE
4895 .TP 
4896 \fBpwd\fP [\fB\-LP\fP]
4897 現在の作業ディレクトリの絶対パス名を出力します。 \fB\-P\fP オプションが指定された場合や、組み込みコマンド \fBset\fP の \fB\-o
4898 physical\fP オプションが有効になっている場合には、 シンボリックリンクを展開したパス名が出力されます。 \fB\-L\fP オプションを使うと、
4899 出力されるパス名にはシンボリックリンクが含まれているかもしれません。 カレントディレクトリの名前を読む際にエラーが起きたり、
4900 不正なオプションが指定されたりしなければ、返却ステータスは 0 となります。
4901 .TP 
4902 \fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItext\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\fP] [\fIname\fP ...]
4903 標準入力、 または \fB\-u\fP オプションの引き数として指定されたファイル・ディスクリプター \fIfd\fP から 1 行を読み込み、最初の単語を最初の
4904 \fIname\fP に代入し、2 番目の単語を 2 番目の \fIname\fP に代入します。以降も同様です。 余った単語とそれらの間の区切り文字は、最後の
4905 \fIname\fP に代入されます。 \fIname\fP よりも標準入力から読み込んだ単語の方が少ない場合には、 余っている \fIname\fP
4906 には空文字列が値として代入されます。
4907 .SM
4908 \fBIFS\fP 中の文字が、行を単語に分割するために使われます。 バックスラッシュ文字 (\fB\e\fP)
4909 を使うと、 次に読み込んだ文字の特殊な意味を消したり、行を連結したりできます。 オプションが与えられていれば、以下の意味を持ちます:
4910 .RS
4911 .PD 0
4912 .TP 
4913 \fB\-a \fP\fIaname\fP
4914 単語を配列変数 \fIaname\fP にインデックス順に代入します。インデックスは 0 から始まります。 新しい値が代入される前に \fIaname\fP
4915 は削除されます。他の \fIname\fP 引き数は無視されます。
4916 .TP 
4917 \fB\-d \fP\fIdelim\fP
4918 改行ではなく、\fIdelim\fP の最初の文字が、入力行を終了するために使われます。
4919 .TP 
4920 \fB\-e\fP
4921 標準入力を端末から読み込む場合、 \fBreadline\fP (前述の
4922 .SM
4923 \fBREADLINE ライブラリ\fP のセクションを参照)
4924 を使って行を取得します。 readline は現在の (行編集がそれまで有効になっていなければデフォルトの)  編集設定を使います。
4925 .TP 
4926 \fB\-i \fP\fItext\fP
4927 行を取得するのに \fBreadline\fP が使われるとき、入力を開始する前に編集バッファに \fItext\fP が置かれます。
4928 .TP 
4929 \fB\-n \fP\fInchars\fP
4930 組み込みコマンド \fBread\fP は、 入力行全体が読み込まれるのを待たず、 \fInchars\fP 文字を読み込んだ時点で戻ります。
4931 ただし、\fInchars\fP 文字が読み込まれる前に区切り文字が現われたときは、 区切り文字を優先します。
4932 .TP 
4933 \fB\-N \fP\fInchars\fP
4934 入力行全体が読み込まれるのを待たず、 \fInchars\fP 文字を読み込んだ時点で戻ります。 ただし、入力に EOF が現れたときや、 \fBread\fP
4935 がタイムアウトになったときを除きます。 入力に区切り文字が現れても特別扱いはせず、 \fInchars\fP 文字を読み込むまでは \fBread\fP
4936 が戻ることはありません。
4937 .TP 
4938 \fB\-p \fP\fIprompt\fP
4939 入力を読み込もうとする前に標準エラー出力に \fIprompt\fP を表示します。 末尾に改行は付きません。
4940 プロンプトが表示されるのは、入力を端末から読み込む場合だけです。
4941 .TP 
4942 \fB\-r\fP
4943 バックスラッシュはエスケープ文字として作用しません。 バックスラッシュは行の一部とみなされます。 特に、バックスラッシュと改行の組み合わせを使って
4944 複数の行を接続することはできません。
4945 .TP 
4946 \fB\-s\fP
4947 静かな (silent) モード。端末に入力が行われても、文字はエコーされません。
4948 .TP 
4949 \fB\-t \fP\fItimeout\fP
4950 入力行全体が \fItimeout\fP 秒以内で読み込まれない場合、 \fBread\fP をタイムアウトさせて、失敗の状態を返します。 \fItimeout\fP
4951 は小数部を持つ十進数でもかまいません。 このオプションは、 \fBread\fP が入力を端末やパイプ、その他の特殊ファイルから
4952 読み込んでいる場合にのみ効果があります。 通常のファイルから読み込んでいる場合には影響ありません。 \fItimeout\fP が 0
4953 のときは、\fBread\fP は指定したファイル・ディスクリプター から読み込める状態であれば成功の状態を返し、そうでなければ失敗の状態を返します。
4954 タイムアウト時間を超えた場合、終了ステータスは 128 より大きい値になります。
4955 .TP 
4956 \fB\-u \fP\fIfd\fP
4957 ファイル・ディスクリプター \fIfd\fP から入力を読み込みます。
4958 .PD
4959 .PP
4960 \fIname\fP が全く与えられていない場合、読み込まれた行は変数
4961 .SM
4962 \fBREPLY\fP に代入されます。 ファイル末尾に到達した場合、
4963 \fBread\fP がタイムアウトした場合 (この場合には終了ステータスは 128 より大きい値になります)、 \fB\-u\fP
4964 の引き数として不正なファイル・ディスクリプターが指定した場合以外は、 終了コードは 0 です。
4965 .RE
4966 .TP 
4967 \fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fIname\fP[=\fIword\fP] ...]
4968 .PD
4969 指定された \fIname\fP に読み込み専用の印を付けます。 それ以降は、これらの \fIname\fP の値を変更することはできません。 \fB\-f\fP
4970 オプションを与えた場合、\fIname\fP に対応する関数に同様の印が付きます。 \fB\-a\fP オプションを与えると、配列変数だけが対象となります。
4971 \fB\-A\fP オプションを与えると、連想配列変数だけが対象となります。 両方のオプションを与えると、 \fB\-A\fP が優先されます。 \fIname\fP
4972 引き数が全く与えられてない場合、または \fB\-p\fP オプションが与えられた場合、読み込み専用の名前全ての一覧が出力されます。
4973 ほかのオプションを合わせて指定すると、出力を読み込み専用の名前の一部に限定します。 \fB\-p\fP オプションを使うと、
4974 入力として再利用できるようなフォーマットで出力が行われます。 変数名に =\fIword\fP が続くと、変数の値に \fIword\fP が設定されます。
4975 返却ステータスは基本的に 0 ですが、 無効なオプションがあった場合、 \fIname\fP のいずれかが有効なシェル変数名でなかった場合、 \fB\-f\fP
4976 オプションの際に関数でない \fIname\fP を与えた場合は除きます。
4977 .TP 
4978 \fBreturn\fP [\fIn\fP]
4979 指定した返り値 \fIn\fP で関数を終了させます。 \fIn\fP を省略すると、返却ステータスは 関数内で最後に実行したコマンドの返却ステータスになります。
4980 関数の外側で使われているが、 \fB.\fP (\fBsource\fP) コマンドによるスクリプトの実行中である場合、 シェルはそのスクリプトの実行を止め、
4981 \fIn\fP またはスクリプト内で最後に実行されたコマンドの終了ステータスを スクリプトの終了ステータスとして返します。 関数の外側で \fB.\fP\^
4982 によるスクリプトの実行中以外に使われた場合、 返却ステータスは偽となります。 関数やスクリプトから実行が戻る前に、 \fBRETURN\fP トラップ
4983 に設定されたコマンドが実行されます。
4984 .TP 
4985 \fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fIarg\fP ...]
4986 .PD 0
4987 .TP 
4988 \fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fIarg\fP ...]
4989 .PD
4990 オプションなしの場合は、シェル変数全ての名前と値の組が表示されます。 表示は、現在設定されている変数を設定や再設定をする入力
4991 として再利用できるフォーマットで行われます。 読み込み専用の変数は再設定できません。 \fIposix モード\fP ではシェル変数だけが表示されます。
4992 出力は現在のロケールに従ってソートされます。 オプションが指定されている場合、 オプションはシェルの属性を設定または解除します。
4993 オプションが処理された後に残っている引き数があれば、 これは位置パラメータの値として扱われ、 \fB$1\fP, \fB$2\fP, \fB...\fP \fB$\fP\fIn\fP
4994 の順に代入されます。 オプションが指定されていれば、以下の意味を持ちます:
4995 .RS
4996 .PD 0
4997 .TP  8
4998 \fB\-a\fP
4999 値を変更したり新規に設定したりした変数および関数が、 (これ以降に実行するコマンドの) 環境として 自動的にエクスポートされます。
5000 .TP  8
5001 \fB\-b\fP
5002 終了したバックグラウンドジョブのステータス報告を、 次のプライマリプロンプトの前ではなく、即座に行います。 これはジョブ制御が有効な場合に限り有効です。
5003 .TP  8
5004 \fB\-e\fP
5005 \fIパイプライン\fP (1 つの \fI単純なコマンド\fP からなるものでもよい)、 括弧で囲まれた \fIサブシェル\fP のコマンド、 ブレース (前述の
5006 .SM
5007 \fBシェルの文法\fP を参照) で囲まれたコマンドのリストの一部として実行されたコマンドの 1 つ が 0
5008 でないステータスで終了した場合、即座に終了します。 ただし、失敗したコマンドが、キーワード \fBwhile\fP または \fBuntil\fP
5009 の直後のコマンドの一部である場合、予約語 \fBif\fP または \fBelif\fP に続く条件式の一部である場合、 \fB&&\fP または \fB||\fP
5010 によるコマンドのリストの一部である場合 (最後の \fB&&\fP や \fB||\fP の後のコマンドを除く)、 パイプラインの中の最後のコマンド以外である、
5011 コマンドの返り値が \fB!\fP で反転されている場合、のいずれかであれば、シェルは終了しません。 \fBERR\fP
5012 に対するトラップが設定されていれば、シェルが終了する前に実行されます。 このオプションはシェルの環境と各サブシェルの環境に別々に適用され (前述の
5013 .SM
5014 \fBコマンド実行環境\fP を参照)、 サブシェルはサブシェル内の全てのコマンドを実行する前に終了するかもしれません。
5015 .TP  8
5016 \fB\-f\fP
5017 パス名展開を無効にします。
5018 .TP  8 
5019 \fB\-h\fP
5020 実行時に参照できるようにコマンドの位置を記憶します。 これはデフォルトで有効になっています。
5021 .TP  8
5022 \fB\-k\fP
5023 コマンド名の前にある代入文だけでなく、 引数として指定された全て代入文も、 そのコマンドに対する環境変数に追加されます。
5024 .TP  8
5025 \fB\-m\fP
5026 監視モード。ジョブ制御は有効になります。ジョブ制御 (前述の
5027 .SM
5028 \fBジョブ制御\fP セクションを参照)
5029 をサポートしているシステム上の対話的シェルでは、 このオプションはデフォルトで有効です。 別のプロセスグループで実行されたバックグラウンドプロセスと、
5030 これらの終了ステータスが書かれた行が、プロセスの終了時に表示されます。
5031 .TP  8
5032 \fB\-n\fP
5033 コマンドを読み込みますが実行はしません。 これを使うとシェルスクリプトの文法エラーをチェックできます。 このオプションは対話的シェルでは無視されます。
5034 .TP  8
5035 \fB\-o \fP\fIoption\-name\fP
5036 \fIoption\-name\fP には、以下のいずれかを指定できます:
5037 .RS
5038 .TP  8
5039 \fBallexport\fP
5040 \fB\-a\fP と同じです。
5041 .TP  8
5042 \fBbraceexpand\fP
5043 \fB\-B\fP と同じです。
5044 .TP  8
5045 \fBemacs\fP
5046 emacs 形式のコマンド行編集インタフェースを使います。 これはシェルが対話的な場合には、デフォルトで有効です。 ただし、
5047 \fB\-\-noediting\fP オプション付きでシェルを実行した場合は除きます。 これは、\fBread \-e\fP での編集インタフェースにも影響します。
5048 .TP  8
5049 \fBerrexit\fP
5050 \fB\-e\fP と同じです。
5051 .TP  8
5052 \fBerrtrace\fP
5053 \fB\-E\fP と同じです。
5054 .TP  8
5055 \fBfunctrace\fP
5056 \fB\-T\fP と同じです。
5057 .TP  8
5058 \fBhashall\fP
5059 \fB\-h\fP と同じです。
5060 .TP  8
5061 \fBhistexpand\fP
5062 \fB\-H\fP と同じです。
5063 .TP  8
5064 \fBhistory\fP
5065 コマンド履歴を有効にします。コマンド履歴については
5066 .SM
5067 \fB履歴\fP セクションで説明しています。
5068 このオプションは、対話的シェルではデフォルトで有効です。
5069 .TP  8
5070 \fBignoreeof\fP
5071 シェルコマンドの
5072 .if  t \f(CWIGNOREEOF=10\fP
5073 .if  n ``IGNOREEOF=10''
5074 を実行した場合と同じ効果を持ちます (前述の \fBシェル変数\fP を参照)。
5075 .TP  8
5076 \fBkeyword\fP
5077 \fB\-k\fP と同じです。
5078 .TP  8
5079 \fBmonitor\fP
5080 \fB\-m\fP と同じです。
5081 .TP  8
5082 \fBnoclobber\fP
5083 \fB\-C\fP と同じです。
5084 .TP  8
5085 \fBnoexec\fP
5086 \fB\-n\fP と同じです。
5087 .TP  8
5088 \fBnoglob\fP
5089 \fB\-f\fP と同じです。
5090 .TP  8
5091 \fBnolog\fP
5092 現在は無視されます。
5093 .TP  8
5094 \fBnotify\fP
5095 \fB\-b\fP と同じです。
5096 .TP  8
5097 \fBnounset\fP
5098 \fB\-u\fP と同じです。
5099 .TP  8
5100 \fBonecmd\fP
5101 \fB\-t\fP と同じです。
5102 .TP  8
5103 \fBphysical\fP
5104 \fB\-P\fP と同じです。
5105 .TP  8
5106 \fBpipefail\fP
5107 設定されている場合、パイプラインの返り値は、 0 以外のステータスで終了した最後の (一番右の) コマンドの値になります。
5108 パイプラインの全てのコマンドが成功の状態で終了すると 0 になります。 このオプションは、デフォルトで無効です。
5109 .TP  8
5110 \fBposix\fP
5111 \fBbash\fP の動作のうち、デフォルトの振舞いが POSIX 標準と異なる部分を、POSIX 標準に準拠するように変更します (\fIposix
5112 モード\fP)。
5113 .TP  8
5114 \fBprivileged\fP
5115 \fB\-p\fP と同じです。
5116 .TP  8
5117 \fBverbose\fP
5118 \fB\-v\fP と同じです。
5119 .TP  8
5120 \fBvi\fP
5121 vi 形式のコマンド行編集インタフェースを使います。 これは、\fBread \-e\fP での編集インタフェースにも影響します。
5122 .TP  8
5123 \fBxtrace\fP
5124 \fB\-x\fP と同じです。
5125 .sp .5
5126 .PP
5127 \fIoption\-name\fP なしで \fB\-o\fP オプションを与えた場合、現在のオプションが出力されます。 \fIoption\-name\fP なしで
5128 \fB+o\fP オプションを与えた場合、現在のオプション設定を再生成する \fBset\fP コマンドの列が標準出力に出力されます。
5129 .RE
5130 .TP  8
5131 \fB\-p\fP
5132 \fI特権 (privileged)\fP モードを有効にします。 このモードでは
5133 .SM
5134 \fB$ENV\fP と
5135 .SM
5136 \fB$BASH_ENV\fP
5137 ファイルは処理されず、シェル関数は環境から継承されず、
5138 .SM
5139 \fBSHELLOPTS\fP,
5140 .SM
5141 \fBBASHOPTS\fP,
5142 .SM
5143 \fBCDPATH\fP,
5144 .SM
5145 \fBGLOBIGNORE\fP 環境変数は定義されていても無視されます。 実ユーザ (グループ) ID
5146 と異なる実効ユーザ (グループ) ID でシェルが起動され、 かつ \fB\-p\fP オプションが与えられていない場合、 これらの動作が行われ、実効ユーザ
5147 ID には実ユーザ ID が設定されます。 起動時に \fB\-p\fP オプションが与えられた場合、 実効ユーザ ID は再設定されません。
5148 このオプションを無効にすると、 実効ユーザ ID と実効グループ ID には、 実ユーザ ID と 実グループ ID が設定されます。
5149 .TP  8
5150 \fB\-t\fP
5151 コマンドを 1 つ読み込み、実行してから終了します。
5152 .TP  8
5153 \fB\-u\fP
5154 パラメータ展開の実行中に、特殊パラメータ "@" と "*" 以外で 設定されていない変数やパラメータをエラーとして扱います。
5155 設定されていない変数やパラメータを展開しようとした場合、 シェルはエラーメッセージを出力します。 シェルが対話的でなければ、0
5156 でないステータスで終了します。
5157 .TP  8
5158 \fB\-v\fP
5159 シェルの入力行を、読み込んだ際に表示します。
5160 .TP  8
5161 \fB\-x\fP
5162 \fI単純なコマンド\fP、\fBfor\fP コマンド、\fBcase\fP コマンド、 \fBselect\fP コマンド、算術 \fBfor\fP
5163 コマンドをそれぞれ展開した後、
5164 .SM
5165 \fBPS4\fP を展開した値を表示し、その後にそのコマンドと展開した引き数や、
5166 結び付いた単語のリストを表示します。
5167 .TP  8
5168 \fB\-B\fP
5169 シェルはブレース展開 (前述の \fBブレース展開\fP を参照) を実行します。これはデフォルトで有効です。
5170 .TP  8
5171 \fB\-C\fP
5172 設定されている場合、 \fBbash\fP はリダイレクト演算子 \fB>\fP, \fB>&\fP, \fB<>\fP
5173 で既存のファイルを上書きしません。 上書きができるのは、リダイレクト演算子 \fB>|\fP を \fB>\fP の代わりに使ったときです。
5174 .TP  8
5175 \fB\-E\fP
5176 設定されている場合、\fBERR\fP のトラップは、 シェル関数、コマンド置換、サブシェル環境で実行されるコマンド に継承されます。
5177 通常、このような場面では \fBERR\fP のトラップは継承されません。
5178 .TP  8
5179 \fB\-H\fP
5180 \fB!\fP 形式の履歴置換を有効にします。 このオプションは、シェルが対話的なときにはデフォルトで有効です。
5181 .TP  8
5182 \fB\-P\fP
5183 設定されている場合、 \fBcd\fP のような現在の作業ディレクトリを変更するコマンドを実行するときに、 シェルはシンボリックリンクを辿りません。
5184 代わりに物理的ディレクトリ構造が使われます。 デフォルトでは、 \fBbash\fP がカレントディレクトリを変更するコマンドを実行する際には、
5185 ディレクトリの論理的な接続が辿られます。
5186 .TP  8
5187 \fB\-T\fP
5188 設定されている場合、\fBDEBUG\fP と \fBRETURN\fP のトラップは、 シェル関数、コマンド置換、サブシェル環境で実行されるコマンド
5189 に継承されます。 通常、このような場面では \fBDEBUG\fP と \fBRETURN\fP のトラップは継承されません。
5190 .TP  8
5191 \fB\-\-\fP
5192 このオプションの後に引き数が続いていない場合には、 位置パラメータの設定が取り消されます。 引き数が続いている場合には、位置パラメータに \fIarg\fP
5193 が設定されます。 \fIarg\fP に \fB\-\fP で始まるものが含まれていても、 オプションではなく位置パラメータとして扱われます。
5194 .TP  8
5195 \fB\-\fP
5196 オプションの終わりを示します。 残りの \fIarg\fP は全て位置パラメータに代入されます。 \fB\-x\fP オプションと \fB\-v\fP
5197 オプションは無効になります。 \fIarg\fP がない場合には、位置パラメータの内容は変化しません。
5198 .PD
5199 .PP
5200 特に断らない限り、各オプションはデフォルトで無効になっています。 \- の代わりに + を使うと、これらのオプションは無効になります。
5201 オプションはシェルを起動する際の引き数としても指定できます。 現在のオプションの集合は、 \fB$\-\fP で知ることができます。
5202 不正なオプションが無ければ、終了ステータスは必ず真となります。
5203 .RE
5204 .TP 
5205 \fBshift\fP [\fIn\fP]
5206 \fIn\fP+1 ... からの位置パラメータの名前を変え、 \fB$1\fP \fB...\fP とします。 \fB$#\fP から \fB$#\fP\-\fIn\fP+1
5207 までの数字で表される パラメータは unset されます。 \fIn\fP は 0 以上 \fB$#\fP 以下の数でなければなりません。 \fIn\fP が 0
5208 ならば、どのパラメータも変更されません。 \fIn\fP が与えられない場合には、1 が指定されたものとみなされます。 \fIn\fP が \fB$#\fP
5209 より大きい場合、位置パラメータは変化しません。 \fIn\fP が \fB$#\fP より大きい場合や 0 より小さい場合には、 返却ステータスは 0
5210 より大きい数になります。 それ以外の場合には 0 になります。
5211 .TP 
5212 \fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIoptname\fP ...]
5213 シェルのオプション動作を制御する変数の値をトグルさせます。 オプションがない場合や、 \fB\-p\fP オプションが指定されている場合には、
5214 設定可能なオプション全てのリストが表示されます。 表示の際には、それぞれが設定されているかどうかも示されます。
5215 オプションの表示は、入力として再利用できるフォーマットで行われます。 その他のオプションは、以下の意味を持っています:
5216 .RS
5217 .PD 0
5218 .TP 
5219 \fB\-s\fP
5220 \fIoptname\fP をそれぞれ有効にします (設定します)。
5221 .TP 
5222 \fB\-u\fP
5223 \fIoptname\fP をそれぞれ無効にします (設定解除します)。
5224 .TP 
5225 \fB\-q\fP
5226 通常の出力を止めます (静かなモード)。 返却ステータスは \fIoptname\fP が設定されているかどうかを示します。 複数の \fIoptname\fP
5227 引き数と \fB\-q\fP が指定されている場合には、 全ての \fIoptnames\fP が有効であるときに返却ステータスが 0 となります。
5228 それ以外のときには、0 でない値となります。
5229 .TP 
5230 \fB\-o\fP
5231 \fIoptname\fP の値を、組み込みコマンド \fBset\fP の \fB\-o\fP オプションで定義されているものに制限します。
5232 .PD
5233 .PP
5234 引き数 \fIoptname\fP なしで \fB\-s\fP オプションまたは \fB\-u\fP オプションを使った場合、それぞれ設定されているもの、
5235 または設定されていないものだけに表示が限定されます。 特に断らない限り、\fBshopt\fP オプションは デフォルトで無効 (設定解除) になっています。
5236 .PP
5237 オプションをリスト表示したときの返却ステータスは、 全ての \fIoptnames\fP が有効になっている場合は 0 となります。 それ以外の場合には 0
5238 でない値となります。 設定または設定取り消しのオプションのときには、 \fIoptname\fP が不正なシェルオプションでなければ、 返却ステータスは 0
5239 となります。
5240 .PP
5241 \fBshopt\fP オプションのリストを以下に示します:
5242 .if  t .sp .5v
5243 .if  n .sp 1v
5244 .PD 0
5245 .TP  8
5246 \fBautocd\fP
5247 設定されている場合、ディレクトリの名前のコマンド名は、 それが \fBcd\fP コマンドの引き数に指定されたものとして実行されます。
5248 このオプションが使われるのは対話的シェルだけです。
5249 .TP  8
5250 \fBcdable_vars\fP
5251 設定されている場合、組み込みコマンド \fBcd\fP への引き数でディレクトリでないものは変数の名前とみなされ、 その値が変更先のディレクトリとなります。
5252 .TP  8
5253 \fBcdspell\fP
5254 設定されている場合、 \fBcd\fP コマンドのディレクトリ要素におけるスペルのちょっとした誤りは修正されます。
5255 チェックされる誤りは、文字の入れ替わり・文字の欠け・ 1 文字余分にあることです。 訂正できた場合には、訂正後のファイル名が表示され、
5256 コマンドは続けて実行されます。 このオプションが使われるのは対話的シェルだけです。
5257 .TP  8
5258 \fBcheckhash\fP
5259 設定されている場合、 \fBbash\fP はハッシュ表で見つけたコマンドを実行する前に 実際に存在するかどうかをチェックします。
5260 ハッシュされているコマンドが既になくなっている場合、 通常のパス検索が行われます。
5261 .TP  8
5262 \fBcheckjobs\fP
5263 設定されている場合、\fBbash\fP は対話的シェルが終了する前に、 停止中のジョブや実行中のジョブの状態を一覧します。
5264 実行中のジョブがあれば、シェルの終了は、 間にほかのコマンドを挟まずに 2 回目の終了が試みられるまで延期されます (前述の
5265 .SM
5266 \fBジョブ制御\fP を参照)。 停止中のジョブがある場合は、シェルは常に終了を延期します。
5267 .TP  8
5268 \fBcheckwinsize\fP
5269 設定されている場合、\fBbash\fP はコマンドの実行後に毎回ウィンドウの大きさをチェックし、 必要に応じて
5270 .SM
5271 \fBLINES\fP と
5272 .SM
5273 \fBCOLUMNS\fP の値を更新します。
5274 .TP  8
5275 \fBcmdhist\fP
5276 設定されている場合、 \fBbash\fP は複数行に分かれているコマンドの全ての行を、 同じ履歴エントリに保存しようとします。
5277 これを使うと、複数行に分かれているコマンドの再編集が容易になります。
5278 .TP  8
5279 \fBcompat31\fP
5280 設定されている場合、 \fBbash\fP は、条件コマンド \fB[[\fP の \fB=~\fP 演算子のクォートされた引き数に関して bash version
5281 3.1 の動作に変更します。
5282 .TP  8
5283 \fBcompat32\fP
5284 設定されている場合、 \fBbash\fP は、条件コマンド \fB[[\fP の \fB<\fP 演算子と \fB>\fP
5285 演算子によるロケール固有の文字列比較に関して、 version 3.2 の動作に変更します。 bash の bash\-4.1
5286 より前のバージョンでは、ASCII コードの照合と \fIstrcmp\fP(3)  を使います。 bash\-4.1 およびそれ以後のバージョンでは、
5287 現在のロケールの照合順序と \fIstrcoll\fP(3)  を使います。
5288 .TP  8
5289 \fBcompat40\fP
5290 設定されている場合、 \fBbash\fP は、条件コマンド \fB[[\fP の \fB<\fP 演算子と \fB>\fP
5291 演算子によるロケール固有の文字列比較 (前項を参照)  とコマンドリストの解釈の効果に関して、 version 4.0 の動作に変更します。
5292 .TP  8
5293 \fBcompat41\fP
5294 設定されている場合、 \fBbash\fP は posix モードのときに、 ダブルクォートの中のパラメータ展開で シングルクォートを特殊文字として扱います。
5295 シングルクォートは対応が取れている (偶数個) 必要があり、 シングルクォートの間の文字はクォートされているものとして扱われます。 これは
5296 version 4.1 の posix モードの動作です。 bash のデフォルトの動作は前のバージョンのままです。
5297 .TP  8
5298 \fBdirspell\fP
5299 設定されている場合、 \fBbash\fP は 指定されたディレクトリ名が存在しなければ、 単語補完のときにディレクトリ名のスペルの訂正を試みます。
5300 .TP  8
5301 \fBdotglob\fP
5302 設定されている場合、 \fBbash\fP は `.' で始まるファイル名をパス名展開の結果に含めます。
5303 .TP  8
5304 \fBexecfail\fP
5305 設定されている場合、 組み込みコマンド \fBexec\fP への引き数として指定されたファイルが実行できなくても、 対話的でないシェルが終了しません。
5306 対話的シェルは \fBexec\fP に失敗しても終了しません。
5307 .TP  8
5308 \fBexpand_aliases\fP
5309 設定されている場合、エイリアスが前述の
5310 .SM
5311 \fBエイリアス\fP セクションで説明したように展開されます。
5312 このオプションは、対話的なシェルではデフォルトで有効です。
5313 .TP  8
5314 \fBextdebug\fP
5315 設定されている場合、デバッガのための動作が有効になります。
5316 .RS
5317 .TP 
5318 \fB1.\fP
5319 組み込みコマンド \fBdeclare\fP の \fB\-F\fP オプションが、 引き数で指定された各関数のソースファイル名と行番号を表示します。
5320 .TP 
5321 \fB2.\fP
5322 \fBDEBUG\fP のトラップで実行されたコマンドが 0 以外を返したとき、 次のコマンドはスキップされ実行もされません。
5323 .TP 
5324 \fB3.\fP
5325 \fBDEBUG\fP のトラップで実行されたコマンドが 2 を返し、かつ、 シェルがサブルーチン (シェル関数や、組み込みコマンドの \fB.\fP や
5326 \fBsource\fP により実行されたシェルスクリプト)  を実行しているとき、\fBreturn\fP の呼び出しがシミュレートされます。
5327 .TP 
5328 \fB4.\fP
5329 上記のシェル変数の説明で述べたように、
5330 .SM
5331 \fBBASH_ARGC\fP と
5332 .SM
5333 \fBBASH_ARGV\fP が更新されます。
5334 .TP 
5335 \fB5.\fP
5336 関数のトレースが有効になります。 コマンド置換、シェル関数、\fB(\fP \fIcommand\fP \fB)\fP で起動されたサブシェルは、 \fBDEBUG\fP と
5337 \fBRETURN\fP のトラップを継承します。
5338 .TP 
5339 \fB6.\fP
5340 エラーのトレースが有効になります。 コマンド置換、シェル関数、\fB(\fP \fIcommand\fP \fB)\fP から起動されたサブシェルは、 \fBERR\fP
5341 のトラップを継承します。
5342 .RE
5343 .TP  8
5344 \fBextglob\fP
5345 設定されている場合、拡張されたパターンマッチング機能が有効になります。 これについては、前述の\fBパス名展開\fPで説明しています。
5346 .TP  8
5347 \fBextquote\fP
5348 設定されている場合、ダブルクォート中の \fB${\fP\fIparameter\fP\fB}\fP の展開で、\fB$\fP\(aq\fIstring\fP\(aq と
5349 \fB$\fP"\fIstring\fP" のクォートが機能します。 このオプションは、デフォルトで有効です。
5350 .TP  8
5351 \fBfailglob\fP
5352 設定されている場合、パス名展開でパターンがファイル名のマッチに失敗すると、 展開エラーになります。
5353 .TP  8
5354 \fBforce_fignore\fP
5355 設定されている場合、単語補完において、シェル変数
5356 .SM
5357 \fBFIGNORE\fP で指定されたサフィックスの単語は無視されます。
5358 無視された単語が唯一の補完候補であったとしても無視されます。 詳しい説明については、前述の
5359 .SM
5360 \fBシェル変数\fP の
5361 .SM
5362 \fBFIGNORE\fP の説明を参照してください。 このオプションは、デフォルトで有効です。
5363 .TP  8
5364 \fBglobstar\fP
5365 設定されている場合、\fB**\fP というパターンがパス名展開で使われると、 深さ 0 以上のディレクトリやサブディレクトリの全てのファイルにマッチします。
5366 直後に \fB/\fP が続く場合には、 ディレクトリとサブディレクトリのみにマッチします。
5367 .TP  8
5368 \fBgnu_errfmt\fP
5369 設定されている場合、シェルのエラーメッセージは GNU 標準のエラーメッセージの形式で出力されます。
5370 .TP  8
5371 \fBhistappend\fP
5372 設定されている場合、シェルの終了時に変数
5373 .SM
5374 \fBHISTFILE\fP の値で指定しているファイルに履歴リストが追加されます。
5375 ファイルへの上書きは行われなくなります。
5376 .TP  8
5377 \fBhistreedit\fP
5378 この変数が設定されており、かつ \fBreadline\fP が使われている場合、ユーザは失敗した履歴置換を再編集できます。
5379 .TP  8
5380 \fBhistverify\fP
5381 この変数が設定されており、かつ \fBreadline\fP が使われている場合、履歴置換の結果は即座にはシェルのパーザに渡されません。
5382 その代わり、結果として得られた行は \fBreadline\fP の編集バッファに読み込まれ、さらに修正できます。
5383 .TP  8
5384 \fBhostcomplete\fP
5385 この変数が設定されており、かつ \fBreadline\fP が使われている場合、\fBbash\fP は \fB@\fP
5386 を含む単語を補完するときにホスト名補完を実行しようとします (前述の
5387 .SM
5388 \fBREADLINE ライブラリ\fP のセクションにおける \fB補完\fP
5389 を参照)。 これはデフォルトで有効になっています。
5390 .TP  8
5391 \fBhuponexit\fP
5392 設定されている場合、\fBbash\fP は対話的なログインシェルを終了するときに、 全てのジョブに
5393 .SM
5394 \fBSIGHUP\fP を送ります。
5395 .TP  8
5396 \fBinteractive_comments\fP
5397 設定されている場合、 \fB#\fP で始まる単語について、その単語とその行の残りの文字を 対話的シェルに無視させることができます (前述の
5398 .SM
5399 \fBコメント\fP セクションを参照)。 このオプションはデフォルトで有効になっています。
5400 .TP  8
5401 \fBlastpipe\fP
5402 設定されており、かつジョブ制御が有効でなければ、 シェルはバックグラウンドでの実行ではないパイプラインの最後のコマンドを 現在のシェル環境で実行します。
5403 .TP  8
5404 \fBlithist\fP
5405 設定されており、かつ \fBcmdhist\fP オプションが有効ならば、 複数行に分かれているコマンドは (セミコロンで区切られるのではなく)
5406 できる限り途中に改行を埋め込むことで履歴に保存されます。
5407 .TP  8
5408 \fBlogin_shell\fP
5409 シェルがログインシェルとして起動されると (前述の
5410 .SM
5411 \fBINVOCATION\fP を参照)、このオプションが設定されます。
5412 この値を変更することはできません。
5413 .TP  8
5414 \fBmailwarn\fP
5415 設定されており、かつ \fBbash\fP がメールのチェックに使うファイルが 前回のチェック以降にアクセスされている場合、 メッセージ \*(lqThe mail
5416 in \fImailfile\fP has been read\*(rq が表示されます。
5417 .TP  8
5418 \fBno_empty_cmd_completion\fP
5419 設定されており、かつ \fBreadline\fP が使われている場合、 空行に対してコマンド補完をさせようとしたときに、 \fBbash\fP は補完候補を
5420 .SM
5421 \fBPATH\fP から検索しません。
5422 .TP  8
5423 \fBnocaseglob\fP
5424 設定されている場合、 \fBbash\fP はパス名展開 (前述の \fBパス名展開\fP を参照) を行うときに、
5425 ファイル名の大文字と小文字を区別せずにマッチングを行います。
5426 .TP  8
5427 \fBnocasematch\fP
5428 設定されている場合、 \fBbash\fP は条件コマンド \fBcase\fP や \fB[[\fP 実行時のパターンマッチで
5429 大文字小文字を区別せずにパターンマッチを行います。
5430 .TP  8
5431 \fBnullglob\fP
5432 設定されている場合、 \fBbash\fP はどのファイルにもマッチしないパターン (前述の \fBパス名展開\fP を参照)
5433 を、その文字列自身ではなく、空文字列に展開します。
5434 .TP  8
5435 \fBprogcomp\fP
5436 設定されている場合、プログラム補完機能 (前述の\fBプログラム補完\fPを参照) が有効になります。 このオプションはデフォルトで有効になっています。
5437 .TP  8
5438 \fBpromptvars\fP
5439 設定されている場合、 プロンプト文字列に対して パラメータ展開、コマンド置換、算術式展開、クォート削除 が行われます。 この展開は前述の
5440 .SM
5441 \fBプロンプト\fP セクションで説明した展開が行われた後に行われます。 このオプションはデフォルトで有効になっています。
5442 .TP  8
5443 \fBrestricted_shell\fP
5444 シェルが制限モードで起動された場合、 このオプションが設定されます (後述の
5445 .SM
5446 \fB制限付きのシェル\fP セクションを参照)。
5447 この値を変更することはできません。 これは起動ファイルが実行されるときにもリセットされないので、
5448 シェルが制限付きかどうかを起動ファイル内部で知ることができます。
5449 .TP  8
5450 \fBshift_verbose\fP
5451 設定されている場合、組み込みコマンド \fBshift\fP においてシフトの回数が位置パラメータの数を超えると、 エラーメッセージが出力されます。
5452 .TP  8
5453 \fBsourcepath\fP
5454 設定されている場合、組み込みコマンド \fBsource\fP (\fB.\fP) は
5455 .SM
5456 \fBPATH\fP
5457 の値を使って、引き数として与えられたファイルを含むディレクトリを探します。 このオプションはデフォルトで有効です。
5458 .TP  8
5459 \fBxpg_echo\fP
5460 設定されている場合、 組み込みコマンド \fBecho\fP は デフォルトでバックスラッシュによるエスケープシーケンスを展開します。
5461 .RE
5462 .PD
5463 .TP 
5464 \fBsuspend\fP [\fB\-f\fP]
5465 .SM
5466 \fBSIGCONT\fP シグナルを受け取るまで、シェルの実行をサスペンドします。 ログインシェルはサスペンドできません。 \fB\-f\fP
5467 オプションを与えると、この動作が上書きされ、ログインシェルがサスペンド できるようになります。 シェルがログインシェルかつ \fB\-f\fP
5468 が与えられていない場合と、ジョブ制御が有効でない場合とを除いて、 返却ステータスは 0 です。
5469 .TP 
5470 \fBtest\fP \fIexpr\fP
5471 .PD 0
5472 .TP 
5473 \fB[\fP \fIexpr\fP \fB]\fP
5474 条件式 \fIexpr\fP を評価した結果に基づいて、ステータス 0 または 1 を返します。
5475 演算子とオペランドそれぞれは別々の引き数でなければなりません。 式は前述の
5476 .SM
5477 \fB条件式\fP セクションで説明したプライマリで構成されます。
5478 \fBtest\fP はオプションを受け取らず、 引き数 \fB\-\-\fP をオプションの終わりを示すものとして受け取りも無視もしません。
5479 .if  t .sp 0.5
5480 .if  n .sp 1
5481 式は次に示す演算子を使って結合できます。 優先度の高い順に示します。 式の評価は後で述べるように引き数の数に依存します。 引き数が 5
5482 つ以上のときは演算子の優先度に従います。
5483 .RS
5484 .PD 0
5485 .TP 
5486 \fB! \fP\fIexpr\fP
5487 \fIexpr\fP が偽ならば真になります。
5488 .TP 
5489 \fB( \fP\fIexpr\fP\fB )\fP
5490 \fIexpr\fP の値を返します。 これを使うと、通常の演算子の優先度を変更できます。
5491 .TP 
5492 \fIexpr1\fP \-\fBa\fP \fIexpr2\fP
5493 \fIexpr1\fP と \fIexpr2\fP が両方とも真ならば真になります。
5494 .TP 
5495 \fIexpr1\fP \-\fBo\fP \fIexpr2\fP
5496 \fIexpr1\fP と \fIexpr2\fP のいずれかが真ならば真になります。
5497 .PD
5498 .PP
5499 \fBtest\fP および \fB[\fP は、 引き数の数に基づいた規則の集合を用いて条件式を評価します。
5500 .if  t .sp 0.5
5501 .if  n .sp 1
5502 .PD 0
5503 .TP 
5504 引き数が 0 個
5505 この式は偽です。
5506 .TP 
5507 引き数が 1 個
5508 引き数が空でない場合に限り真になります。
5509 .TP 
5510 引き数が 2 個
5511 最初の引き数が \fB!\fP ならば、 2 番目の引き数が空の場合に限り真になります。 最初の引き数が、既に
5512 .SM
5513 \fB条件式\fP
5514 セクションで説明した単項条件演算子のいずれかであれば、 単項の評価が真の場合に式は真となります。
5515 最初の引き数が正しい単項条件演算子でなければ、式は偽となります。
5516 .TP 
5517 引き数が 3 個
5518 以下の順に条件が適用されます。 2 番目の引き数が、既に
5519 .SM
5520 \fB条件式\fP セクションで説明した二値条件演算子のいずれかであれば、
5521 最初の引き数と 3 番目の引き数をオペランドとして使った 二値評価の結果が式の結果となります。 引き数が 3 個の場合、 \fB\-a\fP と \fB\-o\fP
5522 は二値演算子として扱われます。 最初の引き数が \fB!\fP であれば、2 番目と 3 番目の引き数を使った、 引き数 2
5523 つの評価の結果を否定したものが値となります。 最初の引き数が \fB(\fP であり、3 番目の引き数が \fB)\fP ならば、 2 番目の引き数を使って引き数
5524 1 つの評価を行った値が結果となります。 これら以外の場合には、式は偽となります。
5525 .TP 
5526 引き数が 4 個
5527 最初の引き数が \fB!\fP ならば、 残りの引き数で作った引き数 3 つの式の値を否定したものが結果となります。
5528 それ以外の場合には、先に挙げた規則を使った優先度に従って 式が展開・評価されます。
5529 .TP 
5530 引き数が 5 個以上
5531 先に挙げた規則を使った優先度に従って式が展開・評価されます。
5532 .if  t .sp 0.5
5533 .if  n .sp 1
5534 .LP
5535 \fBtest\fP や \fB[\fP では、演算子 \fB<\fP と \fB>\fP は ASCII コードに基づき辞書順にソートします
5536 .RE
5537 .PD
5538 .TP 
5539 \fBtimes\fP
5540 シェルとシェルから実行したプロセスのそれぞれについて、 累積のユーザ時間とシステム時間を加えたものを出力します。 返却ステータスは 0 です。
5541 .TP 
5542 \fBtrap\fP [\fB\-lp\fP] [[\fIarg\fP] \fIsigspec\fP ...]
5543 シェルがシグナル \fIsigspec\fP を受け取ると、コマンド \fIarg\fP が読み込まれて、実行されます。 \fIarg\fP が存在しない (かつ
5544 \fIsigspec\fP が一つ指定された) 場合か、 \fIarg\fP が \fB\-\fP の場合、 指定されたシグナルは全てオリジナルの動作
5545 (シェルの起動時に設定されていた値) にリセットされます。 \fIarg\fP が空文字列である場合、それぞれの \fIsigspec\fP
5546 で指定されたシグナルは、 シェルとシェルが起動したコマンドから無視されます。 \fIarg\fP なしで \fB\-p\fP オプションが与えられた場合、 各
5547 \fIsigspec\fP に関連付けられた trap コマンドが表示されます。 引き数が全くないか、 \fB\-p\fP だけが与えられた場合、 \fBtrap\fP
5548 は各シグナルに関連付けられたコマンドのリストを出力します。 \fB\-l\fP オプションを与えると、 シェルはシグナル名と対応する番号のリストを出力します。
5549 それぞれの \fIsigspec\fP は、<\fIsignal.h\fP> で定義されているシグナル名、またはシグナル番号です。
5550 シグナル名は大文字小文字は区別されず、先頭の
5551 .SM
5552 \fBSIG\fP は省略可能です。
5553 .if  t .sp 0.5
5554 .if  n .sp 1
5555 \fIsigspec\fP が
5556 .SM
5557 \fBEXIT\fP (0) であれば、シェルの終了時にコマンド \fIarg\fP が実行されます。 \fIsigspec\fP
5558
5559 .SM
5560 \fBDEBUG\fP であれば、各々の \fI単純なコマンド\fP、\fIfor\fP コマンド、\fIcase\fP コマンド、\fIselect\fP
5561 コマンド、各々の算術 \fIfor\fP コマンドの前、およびシェル関数の最初のコマンドの実行前 (前述の
5562 .SM
5563 \fBシェルの文法\fPセクションを参照)
5564 に、コマンド \fIarg\fP が実行されます。 \fBDEBUG\fP のトラップの影響についての詳細は組み込みコマンド \fBshopt\fP の
5565 \fBextdebug\fP オプションの説明を参照してください。 \fIsigspec\fP が
5566 .SM
5567 \fBRETURN\fP
5568 であれば、シェル関数の実行、または組み込みコマンドの \fB.\fP や \fBsource\fP で実行されたスクリプトの実行が終わるたびにコマンド \fIarg\fP
5569 が実行されます。
5570 .if  t .sp 0.5
5571 .if  n .sp 1
5572 \fIsigspec\fP が
5573 .SM
5574 \fBERR\fP であれば、 単純なコマンドが 0 以外の終了ステータスのときにコマンド \fIarg\fP
5575 が実行されます。 ただし、失敗したコマンドが、 \fBwhile\fP または \fBuntil\fP キーワード直後のコマンドリストに含まれる場合、 \fIif\fP
5576 文の条件に含まれる場合、 \fB&&\fP や \fB||\fP のリスト中で実行するコマンドに含まれる場合、 および、コマンドの戻り値が \fB!\fP
5577 で反転されている場合には、
5578 .SM
5579 \fBERR\fP のトラップは実行されません。 これらは \fBerrexit\fP オプションが従う条件と同じです。
5580 .if  t .sp 0.5
5581 .if  n .sp 1
5582 シェルに入る際に無視されるシグナルは、 トラップもリセットもできません。 無視されなかったシグナルのトラップは、
5583 サブシェルやサブシェル環境では作られたときに 元の値にリセットされます。 \fIsigspec\fP のいずれかが不正であれば、返却ステータスは偽になります。
5584 それ以外の場合には、 \fBtrap\fP は真を返します。
5585 .TP 
5586 \fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...]
5587 オプションなしの場合には、各 \fIname\fP をコマンド名として使ったときに、それがどのように解釈されるかを示します。 \fB\-t\fP オプションを使うと、
5588 \fIname\fP がエイリアス、シェルの予約語、関数、 組み込みコマンド、ディスク上のファイルのいずれかの場合、 \fBtype\fP はそれぞれ
5589 \fIalias\fP, \fIkeyword\fP, \fIfunction\fP, \fIbuiltin\fP, \fIfile\fP という文字列を出力します。 \fIname\fP
5590 が見つからない場合は何も出力されず、偽の終了ステータスが返されます。 \fB\-p\fP オプションを使うと、 \fBtype\fP は \fIname\fP
5591 をコマンド名として指定した場合に実行されるディスクファイルの名前を返します。 ただし、
5592 .if  t \f(CWtype -t name\fP
5593 .if  n ``type -t name''
5594 が \fIfile\fP を返さない場合は、何も返しません。 \fB\-P\fP オプションを使うと、
5595 .if  t \f(CWtype -t name\fP
5596 .if  n ``type -t name''
5597 が \fIfile\fP を返さない場合でも \fIname\fP を
5598 .SM
5599 \fBPATH\fP から探します。 コマンドがハッシュされている場合、 \fB\-p\fP
5600 や \fB\-P\fP はハッシュされている値を表示します。 この場合、表示されるのは、必ずしも
5601 .SM
5602 \fBPATH\fP
5603 中で最初に現われるファイルとは限りません。 \fB\-a\fP オプションを使うと、 \fBtype\fP は \fIname\fP
5604 という名前の実行ファイルがある場所を全て出力します。 \fB\-p\fP オプションが同時に使われていない場合に限り、 エイリアスや関数も出力されます。
5605 \fB\-a\fP を使うときには、ハッシュされているコマンドの表は参照されません。 \fB\-f\fP オプションを使うと、 組み込みコマンド \fBcommand\fP
5606 と同じように、シェル関数を探しません。 \fBtype\fP は、すべての引き数が見つかれば真を返し、 いずれかが見つからなければ偽を返します。
5607 .TP 
5608 \fBulimit\fP [\fB\-HSTabcdefilmnpqrstuvx\fP [\fIlimit\fP]]
5609 これを使うと、シェルおよびシェルが起動するプロセスが 利用できるリソースを制御できます。 ただし、このような制御ができるシステムの場合に限ります。
5610 \fB\-H\fP オプションと \fB\-S\fP オプションは、 それぞれ指定されたリソースに対する 強い制限 (hard limit) と弱い制限 (soft
5611 limit) を設定します。 強い制限は一度設定すると、root 以外のユーザが増やすことはできません。 弱い制限は強い制限の値までは増やせます。
5612 \fB\-H\fP と \fB\-S\fP がどちらも指定されていない場合、 強い制限と弱い制限が両方とも設定されます。 \fIlimit\fP の値には、数字
5613 (単位はリソースに応じて規定)、または \fBhard\fP, \fBsoft\fP, \fBunlimited\fP が指定できます。 \fBhard\fP,
5614 \fBsoft\fP, \fBunlimited\fP は、それぞれ現在の強い制限、現在の弱い制限、制限なしを表します。 \fIlimit\fP
5615 を省略すると、リソースの弱い制限の現在値が表示されます。 ただし、\fB\-H\fP が与えられている場合は除きます。
5616 複数のリソースが指定されているときは、制限名と単位が値の前に出力されます。 他のオプションは以下のように解釈されます:
5617 .RS
5618 .PD 0
5619 .TP 
5620 \fB\-a\fP
5621 現在の制限を全て表示する
5622 .TP 
5623 \fB\-b\fP
5624 ソケットバッファの最大サイズ
5625 .TP 
5626 \fB\-c\fP
5627 生成されるコア (core) ファイルの最大サイズ
5628 .TP 
5629 \fB\-d\fP
5630 プロセスのデータセグメントの最大サイズ
5631 .TP 
5632 \fB\-e\fP
5633 スケジュール優先度 ("nice") の最大値
5634 .TP 
5635 \fB\-f\fP
5636 シェルとその子プロセスが生成できるファイルの最大サイズ
5637 .TP 
5638 \fB\-i\fP
5639 保留中シグナルの最大数
5640 .TP 
5641 \fB\-l\fP
5642 メモリにロックできる最大サイズ
5643 .TP 
5644 \fB\-m\fP
5645 常駐セットサイズ (resident set size) の最大値 (多くのシステムはこの制限を守りません)
5646 .TP 
5647 \fB\-n\fP
5648 オープンできるファイル・ディスクリプターの最大数 (ほとんどのシステムでは、この値を設定することはできません)
5649 .TP 
5650 \fB\-p\fP
5651 512 バイトブロック単位でのパイプのサイズ (これは設定できないかもしれません)
5652 .TP 
5653 \fB\-q\fP
5654 POSIX メッセージキューの最大バイト数
5655 .TP 
5656 \fB\-r\fP
5657 リアルタイム・スケジューリングの優先度の最大値
5658 .TP 
5659 \fB\-s\fP
5660 最大スタックサイズ
5661 .TP 
5662 \fB\-t\fP
5663 CPU 時間の最大量 (秒単位)
5664 .TP 
5665 \fB\-u\fP
5666 1 人のユーザが使用できる最大のプロセス数
5667 .TP 
5668 \fB\-v\fP
5669 そのシェルが使用できる最大の仮想メモリ量 (システムによっては、子プロセスも含まれる)
5670 .TP 
5671 \fB\-x\fP
5672 ファイルロックの最大数
5673 .TP 
5674 \fB\-T\fP
5675 スレッドの最大数
5676 .PD
5677 .PP
5678 \fIlimit\fP が指定された場合、その値が指定されたリソースの新しい値となります (\fB\-a\fP は表示専用です)。
5679 オプションが全く指定されなかった場合は、 \fB\-f\fP が指定されたものとみなされます。 値は 1024 バイト単位で増えますが、例外として \fB\-t\fP
5680 は秒単位、 \fB\-p\fP 512 バイトブロック単位、 \fB\-T\fP, \fB\-b\fP, \fB\-n\fP, \fB\-n\fP, \fB\-u\fP は単位なしの値です。
5681 返却ステータスは基本的に 0 ですが、 不正なオプションや引き数が渡された場合、 新しい制限を設定する際にエラーが起きた場合は除きます。
5682 .RE
5683 .TP 
5684 \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
5685 ユーザのファイル生成マスクに \fImode\fP を設定します。 \fImode\fP が数字で始まる場合には、これは 8 進数と解釈されます。
5686 それ以外の場合には、 \fIchmod\fP(1)  に指定するのと同様のシンボリックなモードマスクと解釈されます。 \fImode\fP
5687 が省略されると、現在のマスクの値が出力されます。 \fB\-S\fP オプションを指定すると、マスクはシンボリックな形式で表示されます。 デフォルトの出力は 8
5688 進の数値です。 \fB\-p\fP オプションが指定され、かつ \fImode\fP が省略された場合、入力として再利用できる形式で出力が行われます。
5689 モードが正常に変更できた場合や、 \fImode\fP 引き数が全く与えられなかった場合には、 返却ステータスは 0 となります。
5690 それ以外の場合には偽となります。
5691 .TP 
5692 \fBunalias\fP [\-\fBa\fP] [\fIname\fP ...]
5693 定義されているエイリアスのリストから \fIname\fP を削除します。 \fB\-a\fP が与えられている場合には、エイリアス定義は全て削除されます。
5694 与えられた \fIname\fP が定義されているエイリアスでない場合以外は、返却ステータスは真になります。
5695 .TP 
5696 \fBunset\fP [\-\fBfv\fP] [\fIname\fP ...]
5697 \fIname\fP それぞれについて、対応する変数や関数を削除します。 オプションが全く指定されていない場合や、 \fB\-v\fP
5698 オプションが指定された場合は、各 \fIname\fP はシェル変数を参照します。 読み込み専用の変数の設定を消すことはできません。 \fB\-f\fP
5699 が指定されている場合、各 \fIname\fP はシェル関数を参照し、その関数の定義が削除されます。 設定が消された変数や関数は全て、
5700 それ以降のコマンドに渡される環境変数からも削除されます。
5701 .SM
5702 \fBCOMP_WORDBREAKS\fP,
5703 .SM
5704 \fBRANDOM\fP,
5705 .SM
5706 \fBSECONDS\fP,
5707 .SM
5708 \fBLINENO\fP,
5709 .SM
5710 \fBHISTCMD\fP,
5711 .SM
5712 \fBFUNCNAME\fP,
5713 .SM
5714 \fBGROUPS\fP,
5715 .SM
5716 \fBDIRSTACK\fP のいずれかの設定を消した場合、これらが持つ特別な特性もなくなります。
5717 これは後で再設定しても元に戻ることはありません。 \fIname\fP が読み込み専用の場合以外は、 終了ステータスは真となります。
5718 .TP 
5719 \fBwait\fP [\fIn ...\fP]
5720 指定された各プロセスを wait し、その終了ステータスを返します。 各 \fIn\fP はプロセス ID またはジョブ指定です。
5721 ジョブ指定を与えた場合、そのジョブのパイプラインに含まれる 全てのプロセスを wait します。 \fIn\fP
5722 が与えられていない場合には、現在アクティブな全ての子プロセスを wait し、 返却ステータスは 0 となります。 \fIn\fP
5723 が存在しないプロセスやジョブを指定している場合、 返却ステータスは 127 になります。 それ以外の場合、返却ステータスは wait
5724 していた最後のプロセスまたはジョブの終了ステータスとなります。
5725 .if  \n(zZ=1 .ig zZ
5726 .\" bash_builtins
5727 .SH "制限付きのシェル (RESTRICTED SHELL)"
5728 .\" rbash.1
5729 .zY
5730 .PP
5731 \fBbash\fP を \fBrbash\fP という名前で起動した場合や、起動時に \fB\-r\fP オプションを指定した場合には、シェルは制限された状態になります。
5732 制限付きのシェルは、 標準のシェルよりも細かく制御された環境を用意したいときに使われます。 制限付きのシェルは \fBbash\fP
5733 と全く同じように動作しますが、 以下のようなことが許可されなかったり実行されなかったりします。
5734 .IP \(bu
5735 \fBcd\fP を使ってディレクトリを変更すること
5736 .IP \(bu
5737 .SM
5738 \fBSHELL\fP,
5739 .SM
5740 \fBPATH\fP,
5741 .SM
5742 \fBENV\fP,
5743 .SM
5744 \fBBASH_ENV\fP
5745 の値の設定や設定取り消しを行うこと
5746 .IP \(bu
5747 \fB/\fP を含むコマンド名を指定すること
5748 .IP \(bu
5749 組み込みコマンド \fB.\fP の引き数として \fB/\fP を含むファイル名を指定すること
5750 .IP \(bu
5751 組み込みコマンド \fBhash\fP のオプション \fB\-p\fP の引き数として \fB/\fP を含むファイル名を指定すること
5752 .IP \(bu
5753 起動時にシェル環境から関数定義をインポートすること
5754 .IP \(bu
5755 起動時にシェル環境から
5756 .SM
5757 \fBSHELLOPTS\fP の値を解釈すること
5758 .IP \(bu
5759 リダイレクション演算子 >, >|, <>, >&, &>, >>
5760 を使ってリダイレクトを行 なうこと
5761 .IP \(bu
5762 組み込みコマンド \fBexec\fP を用いて、シェルを別のコマンドに置き換えること
5763 .IP \(bu
5764 組み込みコマンド \fBenable\fP の \fB\-f\fP オプションと \fB\-d\fP オプションを使って、組み込みコマンドを追加・削除すること
5765 .IP \(bu
5766 組み込みコマンド \fBenable\fP を使って、無効になっている組み込みコマンドを有効にすること
5767 .IP \(bu
5768 組み込みコマンド \fBcommand\fP に \fB\-p\fP オプションを指定すること
5769 .IP \(bu
5770 \fBset +r\fP や \fBset +o restricted\fP を用いて制限モードを解除すること
5771 .PP
5772 これらの制限は、何らかの起動ファイルを読み込んだ後に適用されます。
5773 .PP
5774 .ie  \n(zY=1 シェルスクリプトであると判明したファイルが実行されるとき、
5775 .el \{ シェルスクリプトであると判明したファイルが実行されるとき
5776 (前述の
5777 .SM
5778 .B "コマンドの実行"
5779 を参照)、
5780 \}
5781 \fBrbash\fP はスクリプト実行用に立ち上げたシェルでは制限を全て無効にします。
5782 .if  \n(zY=1 .ig zY
5783 .\" end of rbash.1
5784 .SH 関連項目
5785 .PD 0
5786 .TP 
5787 \fIBash Reference Manual\fP, Brian Fox and Chet Ramey
5788 .TP 
5789 \fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
5790 .TP 
5791 \fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
5792 .TP 
5793 \fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE
5794 .TP 
5795 \fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1)
5796 .TP 
5797 \fIemacs\fP(1), \fIvi\fP(1)
5798 .TP 
5799 \fIreadline\fP(3)
5800 .PD
5801 .SH ファイル
5802 .PD 0
5803 .TP 
5804 .FN /bin/bash
5805 \fBbash\fP の実行ファイル。
5806 .TP 
5807 .FN /etc/profile
5808 システム全体用の初期化ファイル。ログインシェルが実行します。
5809 .TP 
5810 .FN ~/.bash_profile
5811 個人用の初期化ファイル。ログインシェルが実行します。
5812 .TP 
5813 .FN ~/.bashrc
5814 対話シェルごとに実行される、個人用の起動ファイル。
5815 .TP 
5816 .FN ~/.bash_logout
5817 個人用のログインシェル後処理ファイル。 ログインシェルの終了時に実行されます。
5818 .TP 
5819 .FN ~/.inputrc
5820 個人用の \fIreadline\fP 初期化ファイル。
5821 .PD
5822 .SH 作者
5823 Brian Fox, Free Software Foundation
5824 .br
5825 bfox@gnu.org
5826 .PP
5827 Chet Ramey, Case Western Reserve University
5828 .br
5829 chet.ramey@case.edu
5830 .SH バグ報告
5831 \fBbash\fP のバグを見つけたら必ず報告してください。 ただし報告の前には、それが本当にバグであることと、 バグが最新版の \fBbash\fP
5832 で起こることを確かめてください。 最新版は \fIftp://ftp.gnu.org/pub/gnu/bash/\fP から入手できます。
5833 .PP
5834 本当にバグがあると判断した場合には、 \fIbashbug\fP コマンドを使ってバグ報告を行います。 バグを修正してくださった場合には、
5835 ぜひその内容も一緒にメールしてください! 提案や「哲学上の」バグ報告は、\fIbug\-bash@gnu.org\fP にメールしたり、 ニュースグループの
5836 \fBgnu.bash.bug\fP に投稿したりしてくださってもかまいません。
5837 .PP
5838 バグ報告には必ず以下のことを書いてください:
5839 .PP
5840 .PD 0
5841 .TP  20
5842 \fBbash\fP のバージョン
5843 .TP 
5844 ハードウェアとオペレーティングシステム
5845 .TP 
5846 コンパイルに使ったコンパイラ
5847 .TP 
5848 バグ動作の説明
5849 .TP 
5850 バグを再現できる「レシピ」 (簡単なシェルスクリプト)
5851 .PD
5852 .PP
5853 \fIbashbug\fP コマンドは、バグ報告を送るために用意されているテンプレートに、 最初の 3 項目を自動的に書き込みます。
5854 .PP
5855 このオンラインマニュアルに関するコメントやバグ報告は \fIchet.ramey@case.edu\fP 宛にお願いします。
5856 .SH バグ
5857 .PP
5858 \fBbash\fP は大きすぎるし、遅すぎます。
5859 .PP
5860 \fBbash\fP と昔ながらのバージョンの \fBsh\fP にはちょっとした違いがいくつかあります。この大部分は
5861 .SM
5862 \fBPOSIX\fP
5863 の仕様のせいで生じたものです。
5864 .PP
5865 使い方によっては、エイリアスは混乱の元になります。
5866 .PP
5867 シェル組み込みコマンドとシェル関数は、停止したり、実行を再開したりできません。
5868 .PP
5869 複合コマンドや `a ; b ; c' の形式のコマンド列は、 プロセスのサスペンドを行う際に綺麗に扱うことができません。 あるプロセスを停止すると、
5870 シェルはコマンド列の次のコマンドを即座に実行するからです。 この問題はコマンド列を括弧の中に置いて サブシェルに実行させることで解決できます。
5871 こうすれば、ひとまとまりのものとして停止できます。
5872 .PP
5873 配列変数は (まだ) エクスポートできません。
5874 .PP
5875 一度に 1 つのコプロセスしかアクティブにできません。
5876 .zZ
5877 .zY