• R/O
  • SSH
  • HTTPS

yash: Commit


Commit MetaInfo

Revision3903 (tree)
Time2018-10-14 20:45:44
Authormagicant

Log Message

Document all POSIXly-correct behavior

All the effects of the POSIXly-correct mode are now documented in
posix.txt and the built-in command manual pages.

Change Summary

Incremental Difference

--- yash/trunk/doc/_cd.txt (revision 3902)
+++ yash/trunk/doc/_cd.txt (revision 3903)
@@ -15,9 +15,13 @@
1515
1616 The cd built-in changes the working directory to the directory specified by
1717 the operand.
18+
1819 The pathname of the new working directory is assigned to the
1920 link:params.html#sv-pwd[+PWD+ variable], whose previous value is again
2021 assigned to the link:params.html#sv-oldpwd[+OLDPWD+ variable].
22+The new +PWD+ value will not contain any +.+ or +..+ components except when
23+the shell is in the link:posix.html[POSIXly-correct mode] and the new pathname
24+begins with +/..+.
2125
2226 If {{directory}} is a relative path that does not start with `.' or `..',
2327 paths in the link:params.html#sv-cdpath[+CDPATH+ variable] are searched to
--- yash/trunk/doc/_fg.txt (revision 3902)
+++ yash/trunk/doc/_fg.txt (revision 3903)
@@ -20,6 +20,8 @@
2020 it.
2121
2222 The name of the job is printed when the job is resumed.
23+When not in the link:posix.html[POSIXly-correct mode], the job number is also
24+printed.
2325
2426 The built-in can be used only when link:job.html[job control] is enabled.
2527
--- yash/trunk/doc/_getopts.txt (revision 3902)
+++ yash/trunk/doc/_getopts.txt (revision 3903)
@@ -108,4 +108,7 @@
108108 The POSIX standard does not specify what will happen when the +OPTIND+
109109 variable is assigned a value other than +1+.
110110
111+In the link:posix.html[POSIXly-correct mode], option characters in
112+{{optionlist}} must be alphanumeric.
113+
111114 // vim: set filetype=asciidoc textwidth=78 expandtab:
--- yash/trunk/doc/_jobs.txt (revision 3902)
+++ yash/trunk/doc/_jobs.txt (revision 3903)
@@ -54,6 +54,9 @@
5454 {{job}}s::
5555 The link:job.html#jobid[job IDs] of jobs to be reported.
5656 When no {{job}} is specified, all jobs under the shell's control are reported.
57++
58+The percent sign (+%+) at the beginning of a job ID can be omitted if the
59+shell is not in the link:posix.html[POSIXly-correct mode].
5760
5861 [[exitstatus]]
5962 == Exit status
--- yash/trunk/doc/_printf.txt (revision 3902)
+++ yash/trunk/doc/_printf.txt (revision 3903)
@@ -204,4 +204,9 @@
204204 character because all multibyte characters are converted to wide characters
205205 when processed in the shell.
206206
207+If the shell is not in the link:posix.html[POSIXly-correct mode] and the
208+``long double'' floating-point arithmetic is supported on the running system,
209+then ``long double'' is used for floating-point conversion specifications.
210+Otherwise, ``double'' is used.
211+
207212 // vim: set filetype=asciidoc textwidth=78 expandtab:
--- yash/trunk/doc/_wait.txt (revision 3902)
+++ yash/trunk/doc/_wait.txt (revision 3903)
@@ -26,6 +26,10 @@
2626 If the shell receives a SIGINT signal when job control is enabled, the
2727 built-in aborts waiting.
2828
29+If the shell is link:interact.html[interactive],
30+link:job.html[job-controlling], and not in the link:posix.html[POSIXly-correct
31+mode], the job status is printed when the job is terminated or stopped.
32+
2933 [[operands]]
3034 == Operands
3135
--- yash/trunk/doc/ja/_cd.txt (revision 3902)
+++ yash/trunk/doc/ja/_cd.txt (revision 3903)
@@ -13,8 +13,10 @@
1313 [[description]]
1414 == 説明
1515
16-Cd コマンドはシェルの作業ディレクトリをオペランドで指定したディレクトリに変更します。新しい作業ディレクトリに応じて link:params.html#sv-pwd[+PWD+ 変数]の値が再設定されるとともに、前の +PWD+ 変数の値が link:params.html#sv-oldpwd[+OLDPWD+ 変数]に設定されます。
16+Cd コマンドはシェルの作業ディレクトリをオペランドで指定したディレクトリに変更します。
1717
18+新しい作業ディレクトリに応じて link:params.html#sv-pwd[+PWD+ 変数]の値が再設定されるとともに、前の +PWD+ 変数の値が link:params.html#sv-oldpwd[+OLDPWD+ 変数]に設定されます。新しい +PWD+ の値は +.+ や +..+ のディレクトリ成分を含みません (link:posix.html[POSIX 準拠モード]で新しいパスが +/..+ で始まる場合を除く)。
19+
1820 指定した{{ディレクトリ}}が相対パスの場合 (最初が +.+ または +..+ で始まるものを除く)、{zwsp}link:exec.html#search[コマンドの検索]における link:params.html#sv-path[+PATH+ 変数]の検索と同様にして、{zwsp}link:params.html#sv-cdpath[+CDPATH+ 変数]の値にあるコロンで区切った各ディレクトリ内に指定した{{ディレクトリ}}があるかどうか調べます。ディレクトリが見つかった場合は、そのディレクトリが新しい作業ディレクトリになります。見つからなかった場合は、{{ディレクトリ}}は現在の作業ディレクトリからの相対パスとなります。
1921
2022 +CDPATH+ 変数の検索で新しい作業ディレクトリが見つかった場合または{{ディレクトリ}}として +-+ が指定された場合は新しい作業ディレクトリのパスを標準出力に出力します。
--- yash/trunk/doc/ja/_fg.txt (revision 3902)
+++ yash/trunk/doc/ja/_fg.txt (revision 3903)
@@ -16,6 +16,7 @@
1616 Fg コマンドはジョブをフォアグラウンドに移動し SIGCONT シグナルを送ります。これにより、ジョブが停止していた場合はフォアグラウンドで実行が再開されます。Fg コマンドはジョブの実行が終了するまで待機し、ジョブの終了ステータスを返します。
1717
1818 ジョブの実行を再開する前に fg コマンドはジョブの名前を標準出力に出力します。
19+非 link:posix.html[POSIX 準拠モード]ではジョブの番号も出力されます。
1920
2021 Fg コマンドは{zwsp}link:job.html[ジョブ制御]が有効な時しか使えません。
2122
--- yash/trunk/doc/ja/_getopts.txt (revision 3902)
+++ yash/trunk/doc/ja/_getopts.txt (revision 3903)
@@ -77,4 +77,6 @@
7777
7878 POSIX は、+OPTIND+ 変数に +1+ 以外の値を代入した場合の動作を規定していません。
7979
80+link:posix.html[POSIX 準拠モード]では、{{オプションリスト}}に含まれるオプションは英数字でなければなりません。
81+
8082 // vim: set filetype=asciidoc expandtab:
--- yash/trunk/doc/ja/_jobs.txt (revision 3902)
+++ yash/trunk/doc/ja/_jobs.txt (revision 3903)
@@ -50,6 +50,8 @@
5050
5151 {{ジョブ}}::
5252 表示するジョブの{zwsp}link:job.html#jobid[ジョブ ID] です。一つも指定しない場合は全てのジョブを表示します。
53++
54+非 link:posix.html[POSIX 準拠モード]ではジョブ ID の先頭の +%+ は省略できます。
5355
5456 [[exitstatus]]
5557 == 終了ステータス
--- yash/trunk/doc/ja/_printf.txt (revision 3902)
+++ yash/trunk/doc/ja/_printf.txt (revision 3903)
@@ -149,4 +149,6 @@
149149
150150 POSIX では、マルチバイト文字の扱いについて厳密に定義していません。+%s+ 変換指定で精度を指定した場合や、+%c+ 変換指定を使用する場合、値にマルチバイト文字が含まれていると適切な出力が得られないかもしれません。Yash では、マルチバイト文字は全てワイド文字に変換してから処理するので、マルチバイト文字の一部のバイトだけが出力されるようなことはありません。
151151
152+シェルが非 link:posix.html[POSIX 準拠モード]で、システム上で ``long double'' 浮動小数点数が使用可能な場合は、実数の変換指定は ``long double'' で処理されます。それ以外の場合は ``double'' で処理されます。
153+
152154 // vim: set filetype=asciidoc expandtab:
--- yash/trunk/doc/ja/_wait.txt (revision 3902)
+++ yash/trunk/doc/ja/_wait.txt (revision 3903)
@@ -19,6 +19,8 @@
1919
2020 Wait コマンドの実行中にシェルがシグナルを受信した場合、そのシグナルに対し{zwsp}link:_trap.html[トラップ]が設定してあればそのトラップを直ちに実行し wait コマンドはそのまま終了します。またジョブ制御が有効な場合、シェルが SIGINT シグナルを受信すると wait コマンドは中断されます。
2121
22+シェルが{zwsp}link:interact.html[対話モード]で、{zwsp}link:job.html[ジョブ制御]が有効で、非 link:posix.html[POSIX 準拠モード]のとき、ジョブが終了または停止した時にジョブの状態を出力します。
23+
2224 [[operands]]
2325 == オペランド
2426
--- yash/trunk/doc/ja/posix.txt (revision 3902)
+++ yash/trunk/doc/ja/posix.txt (revision 3903)
@@ -11,25 +11,28 @@
1111 POSIX 準拠モードを有効にすると、yash は POSIX の規定にできるだけ従うようになるだけでなく、POSIX が__未定義__や__未規定__と定めている場合のほとんどをエラーにするようになります。すなわち、yash 独自の拡張機能の多くは使えなくなります。具体的には、POSIX 準拠モードを有効にすると以下のような挙動の変化があります。
1212
1313 - シェルの起動時の{zwsp}link:invoke.html#init[初期化]で読み込むスクリプトファイルが異なります。
14+- シェルが link:invoke.html#arguments[+-c+ オプション]で起動された場合、構文エラー時に +yash -c+ の代わりに +sh -c+ をファイル名として表示します。
1415 - グローバル{zwsp}link:syntax.html#aliases[エイリアス]の置換を行いません。
1516 - link:syntax.html#compound[複合コマンド]の{zwsp}link:syntax.html#grouping[グルーピング]や link:syntax.html#if[if 文]の内容が空の場合エラーになります。
1617 - link:syntax.html#for[For ループ]で展開した単語はグローバル変数として代入します。変数名はポータブルな (すなわち ASCII の範囲内の) 文字しか使えません。
1718 - link:syntax.html#case[Case 文]の最初のパターンを +esac+ にすることはできません。
19+- 予約語 +!+ の直後に空白を置かずに +(+ を置くことはできません。
1820 - 予約語 +function+ を用いる形式の{zwsp}link:syntax.html#funcdef[関数定義]構文は使えません。関数名はポータブルな (すなわち ASCII の範囲内の) 文字しか使えません。
1921 - link:syntax.html#simple[単純コマンド]での{zwsp}link:params.html#arrays[配列]の代入はできません。
2022 - シェル実行中に link:params.html#sv-lc_ctype[+LC_CTYPE+ 変数]の値が変わっても、それをシェルのロケール情報に反映しません。
2123 - link:params.html#sv-random[+RANDOM+ 変数]は使えません。
2224 - link:expand.html#tilde[チルダ展開]で +~+ と +~{{ユーザ名}}+ 以外の形式の展開が使えません。
23-- link:expand.html#params[パラメータ展開]の{zwsp}link:expand.html#param-name[入れ子]はできません。また{zwsp}link:expand.html#param-index[インデックス]の指定はできません。
25+- link:expand.html#params[パラメータ展開]の{zwsp}link:expand.html#param-name[入れ子]はできません。また{zwsp}link:expand.html#param-index[インデックス]および{{単語2}}のある{zwsp}link:expand.html#param-mod[加工指定]は使用できません。
2426 - +$(+ と +)+ で囲んだ{zwsp}link:expand.html#cmdsub[コマンド置換]に含まれるコマンドは、コマンド置換が実行される時に毎回解析されます。
2527 - link:expand.html#arith[数式展開]で小数ならびに `++` および `--` 演算子が使えません。数値でない変数は常にエラーになります。
2628 - link:redir.html[リダイレクト]の対象を示すトークンは次のリダイレクトのファイル記述子を示す整数と紛らわしくないようにしなければなりません。
2729 - link:redir.html[リダイレクト]を伴う{zwsp}link:syntax.html#compound[複合コマンド]の直後に +}+ や +fi+ などの予約語を置くことはできません。
2830 - link:redir.html#file[ファイルのリダイレクト]で、{zwsp}link:expand.html#glob[パス名展開]の結果が一つでない場合、すぐにはエラーにせず、パス名展開を行わなかったときと同様に扱います。
31+- +<&+ および +>&+ link:redir.html#dup[リダイレクト]演算子の対象となるファイル記述子はそれぞれ読み込み可能および書き込み可能でなければなりません。
2932 - link:redir.html#socket[ソケットリダイレクト]・{zwsp}link:redir.html#here[ヒアストリング]・{zwsp}link:redir.html#pipe[パイプリダイレクト]・{zwsp}link:redir.html#process[プロセスリダイレクト]は使用できません。
3033 - link:exec.html#simple[単純コマンドの実行]時、コマンドが見つからなくても link:params.html#sv-command_not_found_handler[+COMMAND_NOT_FOUND_HANDLER+ 変数]の値は実行しません。
3134 - link:exec.html#search[コマンドの検索]において{zwsp}link:builtin.html#types[通常の組込みコマンド]は対応する外部コマンドがないと見つかりません。
32-- いくつかの{zwsp}link:builtin.html[組込みコマンド]で特定のオプションが使えなくなるなど挙動が変わります。
35+- いくつかの{zwsp}link:builtin.html[組込みコマンド]で特定のオプションが使えなくなるなど挙動が変わります。特に、長いオプションは使えなくなります。
3336 - link:interact.html[対話モード]でないとき、{zwsp}link:builtin.html#types[特殊組込みコマンド]のオプションやオペランドの使い方が間違っているとシェルは直ちに終了します。また特殊組込みコマンドで代入エラーやリダイレクトエラーが発生したときも直ちに終了します。
3437 - link:interact.html[対話モード]のプロンプトを出す前に link:params.html#sv-prompt_command[+PROMPT_COMMAND+ 変数]の値を実行しません。{zwsp}link:params.html#sv-ps1[+PS1+ 変数]・{zwsp}link:params.html#sv-ps2[+PS2+ 変数]・{zwsp}link:params.html#sv-ps4[+PS4+ 変数]の値の解釈の仕方が違います。{zwsp}link:params.html#sv-yash_ps1[+YASH_PS1+] など +YASH_+ で始まる名前のプロンプト変数は使用されません。
3538 - link:interact.html#mailcheck[メールチェック]において、ファイルが更新されている場合はファイルが空でも新着メールメッセージを出力します。
--- yash/trunk/doc/posix.txt (revision 3902)
+++ yash/trunk/doc/posix.txt (revision 3903)
@@ -29,6 +29,9 @@
2929 When the POSIXly-correct mode is enabled:
3030
3131 - Different link:invoke.html#init[initialization scripts] are used.
32+- If the shell was started with the link:invoke.html#arguments[+-c+ option],
33+ +sh -c+ (instead of +yash -c+) is printed as the script pathname on a syntax
34+ error.
3235 - Global link:syntax.html#aliases[aliases] are not substituted.
3336 - Nested commands in a link:syntax.html#compound[compound command] must not be
3437 empty.
@@ -36,6 +39,8 @@
3639 variable rather than a local. The variable must have a portable (ASCII-only)
3740 name.
3841 - The first pattern in a link:syntax.html#case[case command] cannot be +esac+.
42+- The +!+ keyword cannot be followed by +(+ without any whitespaces
43+ in-between.
3944 - The +function+ keyword cannot be used for link:syntax.html#funcdef[function
4045 definition]. The function must have a portable (ASCII-only) name.
4146 - link:syntax.html#simple[Simple commands] cannot assign to
@@ -47,7 +52,8 @@
4752 - link:expand.html#tilde[Tilde expansion] only expands +~+ and
4853 +~{{username}}+.
4954 - link:expand.html#params[Parameter expansion] cannot be nested.
50- No link:expand.html#param-index[indexes] are allowed.
55+ No link:expand.html#param-index[indexes] or
56+ link:expand.html#param-mod[modifiers] with {{word2}} are allowed.
5157 - The commands in a link:expand.html#cmdsub[command substitution] of the form
5258 +$({{commands}})+ are parsed every time the substitution is executed.
5359 - In link:expand.html#arith[arithmetic expansion], fractional numbers and the
@@ -61,6 +67,9 @@
6167 link:expand.html#glob[pathname expansion] yielded more than one or no
6268 pathname, it is not immediately treated as an error. Instead, the shell
6369 tries to treat the word before the expansion as a pathname.
70+- A file descriptor must be readable and writable when duplicated by the
71+ +<&+ and +>&+ link:redir.html#dup[redirection] operator,
72+ respectively.
6473 - link:redir.html#socket[Socket redirection], link:redir.html#here[here
6574 strings], link:redir.html#pipe[pipe redirection], and
6675 link:redir.html#process[process redirection] cannot be used.
@@ -72,7 +81,8 @@
7281 built-in] needs to have a corresponding external command for the built-in to
7382 be found.
7483 - Some link:builtin.html[built-ins] behave differently.
75- Especially, some command-line options cannot be used.
84+ Especially, long command-line options (as well as some others) cannot be
85+ used.
7686 - A link:interact.html[non-interactive] shell exits when a
7787 link:builtin.html#types[special built-in] is given a syntactically wrong
7888 arguments or when an error occurs in assignment or redirection with a
Show on old repository browser