|
|
Line 2,781: |
Line 2,781: |
|
| |
|
| == SHELL COMPATIBILITY MODE == | | == SHELL COMPATIBILITY MODE == |
| Bash-4.0 introduced the concept of a `shell compatibility level', specified as a set of options to the shopt builtin compat31, compat32, compat40, compat41, and so on). There is only one current compatibility level -- each option is mutually exclusive. The compatibility level is intended to allow users to select behavior from previous versions that is incompatible with newer versions while they migrate scripts to use current features and behavior. It's intended to be a temporary solution. | | Bash-4.0では「シェル互換性レベル」という概念が導入され、shopt組み込みのcompat31、compat32、compat40、compat41などに対するオプションのセットとして指定される。) 現在の互換性レベルは1つだけで、各オプションは相互に排他的である。 互換性レベルは、ユーザーが新しいバージョンと互換性のない旧バージョンの動作を選択できるようにするためのもので、スクリプトを移行して現在の機能と動作を使用できるようにするためのものである。これは一時的な解決策である。 |
|
| |
|
| This section does not mention behavior that is standard for a particular version (e.g., setting compat32 means that quoting the rhs of the regexp matching operator quotes special regexp characters in the word, which is default behavior in bash-3.2 and above).
| | このセクションでは、特定のバージョンで標準となっている動作については言及しない(例えば、compat32を設定することは、正規表現マッチング演算子のrhsを引用することで、単語内の特殊な正規表現文字を引用することを意味し、これはbash-3.2以上のデフォルトの動作である)。 |
|
| |
|
| If a user enables, say, compat32, it may affect the behavior of other compatibility levels up to and including the current compatibility level. The idea is that each compatibility level controls behavior that changed in that version of bash, but that behavior may have been present in earlier versions. For instance, the change to use locale-based comparisons with the [[ command came in bash-4.1, and earlier versions used ASCII-based comparisons, so enabling compat32 will enable ASCII-based comparisons as well. That granularity may not be sufficient for all uses, and as a result users should employ compatibility levels carefully. Read the documentation for a particular feature to find out the current behavior.
| | ユーザーが例えばcompat32を有効にすると、現在の互換性レベルまでの他の互換性レベルの動作に影響を与える可能性がある。 各互換性レベルは、そのバージョンのbashで変更された動作を制御するが、その動作は以前のバージョンにもあったかもしれないという考え方である。 例えば、[[ コマンドでロケール・ベースの比較を使用するようになったのはbash-4.1からで、それ以前のバージョンではASCIIベースの比較を使っていたため、compat32を有効にするとASCIIベースの比較も有効になる。 そのため、compat32を有効にすると、ASCIIベースの比較も有効になる。この細かさは、すべての用途に十分とは限らないので、ユーザーは互換性レベルを慎重に使用すべきである。 現在の動作を知るには、特定の機能のドキュメントを読むこと。 |
|
| |
|
| Bash-4.3 introduced a new shell variable: BASH_COMPAT. The value assigned to this variable (a decimal version number like 4.2, or an integer corresponding to the compatNN option, like 42) determines the compatibility level. | | Bash-4.3は新しいシェル変数を導入した: BASH_COMPATである。 この変数に代入される値(4.2のような10進数のバージョン番号、または42のようなcompatNNオプションに対応する整数)が互換性レベルを決定する。 |
|
| |
|
| Starting with bash-4.4, Bash has begun deprecating older compatibility levels. Eventually, the options will be removed in favor of BASH_COMPAT.
| | bash-4.4から、Bashは古い互換性レベルを廃止し始めた。 最終的にはこのオプションは削除され、BASH_COMPATが使われるようになる。 |
|
| |
|
| Bash-5.0 is the final version for which there will be an individual shopt option for the previous version. Users should use BASH_COMPAT on bash-5.0 and later versions. | | Bash-5.0は、以前のバージョンに対する個別のshoptオプションが存在する最後のバージョンである。ユーザーはbash-5.0以降のバージョンでBASH_COMPATを使うべきである。 |
|
| |
|
| The following table describes the behavior changes controlled by each compatibility level setting. The compatNN tag is used as shorthand for setting the compatibility level to NN using one of the following mechanisms. For versions prior to bash-5.0, the compatibility level may be set using the corresponding compatNN shopt option. For bash-4.3 and later versions, the BASH_COMPAT variable is preferred, and it is required for bash-5.1 and later versions.
| | 以下の表は、各互換性レベルの設定によって制御される動作の変更について説明したものである。 compatNNタグは、以下のメカニズムのいずれかを使用して互換性レベルをNNに設定するための省略記法として使用される。 bash-5.0より前のバージョンでは、対応するcompatNN shoptオプションを使用して互換性レベルを設定することができる。 bash-4.3およびそれ以降のバージョンでは、BASH_COMPAT変数を使用するのが望ましく、bash-5.1およびそれ以降のバージョンでは必須である。 |
|
| |
|
| ;compat31 | | ;compat31 |
| * quoting the rhs of the [[ command's regexp matching operator (=~) has no special effect | | * コマンドの正規表現マッチング演算子(=~)のrhsを引用しても特別な効果はない。 |
|
| |
|
| ;compat32 | | ;compat32 |
| * interrupting a command list such as "a ; b ; c" causes the execution of the next command in the list (in bash-4.0 and later versions, the shell acts as if it received the interrupt, so interrupting one command in a list aborts the execution of the entire list) | | * "a ; b ; c "のようなコマンドリストに割り込むと、リスト内の次のコマンドが実行される(bash-4.0以降のバージョンでは、シェルは割り込みを受け取ったかのように動作するため、リスト内の1つのコマンドに割り込むと、リスト全体の実行が中断される)。 |
|
| |
|
| ;compat40 | | ;compat40 |
| * the < and > operators to the [[ command do not consider the current locale when comparing strings; they use ASCII ordering. Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); bash-4.1 and later use the current locale's collation sequence and strcoll(3). | | * コマンドの < と > 演算子は、文字列を比較するときに現在のロケールを考慮しない。 bash-4.1以前のバージョンでは、ASCII照合順序と[https://manpages.debian.org/unstable/manpages-dev/strcmp.3.en.html strcmp](3)を使用する。bash-4.1以降では、現在のロケールの照合順序と[https://manpages.debian.org/unstable/manpages-dev/strcoll.3.en.html strcoll](3)を使用する。 |
|
| |
|
| ;compat41 | | ;compat41 |
| * in posix mode, time may be followed by options and still be recognized as a reserved word (this is POSIX interpretation 267) | | * posixモードでは、timeの後にオプションを付けても予約語として認識される(これはPOSIX解釈267)。 |
| * in posix mode, the parser requires that an even number of single quotes occur in the word portion of a double-quoted parameter expansion and treats them specially, so that characters within the single quotes are considered quoted (this is POSIX interpretation 221) | | * posix モードでは、パーサーは二重引用符で囲まれたパラメータ展開の単語部分に偶数の一重引用符があることを要求し、一重引用符内の文字が引用符で囲まれたとみなされるように、それらを特別に扱う(これは POSIX 解釈 221 である)。 |
|
| |
|
| ;compat42 | | ;compat42 |
| * the replacement string in double-quoted pattern substitution does not undergo quote removal, as it does in versions after bash-4.2 | | * 二重引用符で囲まれたパターン置換の置換文字列は、bash-4.2以降のバージョンでは引用符の削除を行わない。 |
| * in posix mode, single quotes are considered special when expanding the word portion of a double-quoted parameter expansion and can be used to quote a closing brace or other special character (this is part of POSIX interpretation 221); in later versions, single quotes are not special within double-quoted word expansions | | * posixモードでは、二重引用符で囲まれたパラメータ展開の単語部分を展開するとき、一重引用符は特別なものとみなされ、閉じ波括弧や他の特別な文字を引用するために使用できる(これはPOSIX解釈221の一部である)。 |
|
| |
|
| ;compat43 | | ;compat43 |
| * the shell does not print a warning message if an attempt is made to use a quoted compound assignment as an argument to declare (declare -a foo='(1 2)'). Later versions warn that this usage is deprecated | | * シェルは、引用符で囲まれた複合代入をdeclareの引数として使おうとしても警告メッセージを表示しない(declare -a foo='(1 2)')。後のバージョンでは、この使い方が非推奨であることを警告する |
| * word expansion errors are considered non-fatal errors that cause the current command to fail, even in posix mode (the default behavior is to make them fatal errors that cause the shell to exit) | | * 単語展開エラーは、posixモードであっても、現在のコマンドを失敗させる非致命的エラーとみなされる(デフォルトの動作は、シェルを終了させる致命的エラーとなる)。 |
| * when executing a shell function, the loop state (while/until/etc.) is not reset, so break or continue in that function will break or continue loops in the calling context. Bash-4.4 and later reset the loop state to prevent this | | * シェル関数を実行するとき、ループ状態(while/until/etc)はリセットされないため、その関数内でbreakやcontinueを行うと、呼び出し元のコンテキストでループが解除されたり継続されたりする。Bash-4.4以降では、ループ状態をリセットしてこれを防いでいる。 |
|
| |
|
| ;compat44 | | ;compat44 |
| * the shell sets up the values used by BASH_ARGV and BASH_ARGC so they can expand to the shell's positional parameters even if extended debugging mode is not enabled | | * シェルがBASH_ARGVとBASH_ARGCで使用する値を設定し、拡張デバッグモードが有効になっていなくても、シェルの位置パラメーターに展開できるようにする。 |
| * a subshell inherits loops from its parent context, so break or continue will cause the subshell to exit. Bash-5.0 and later reset the loop state to prevent the exit | | * サブシェルは親コンテキストからループを継承するため、breakやcontinueはサブシェルを終了させる。 Bash-5.0以降では、ループ状態をリセットして終了を防止する。 |
| *variable assignments preceding builtins like export and readonly that set attributes continue to affect variables with the same name in the calling environment even if the shell is not in posix mode | | *シェルがposixモードでなくても、exportやreadonlyのような属性を設定する組み込み関数に先行する変数代入は、呼び出し環境の同じ名前の変数に影響を与え続ける。 |
|
| |
|
| ;compat50 | | ;compat50 |
| * Bash-5.1 changed the way $RANDOM is generated to introduce slightly more randomness. If the shell compatibility level is set to 50 or lower, it reverts to the method from bash-5.0 and previous versions, so seeding the random number generator by assigning a value to RANDOM will produce the same sequence as in bash-5.0 | | * Bash-5.1では、$RANDOMの生成方法が変更され、若干ランダム性が増した。 シェルの互換性レベルが50以下に設定されている場合、bash-5.0とそれ以前のバージョンの方法に戻るので、RANDOMに値を代入して乱数ジェネレーターをシードすると、bash-5.0と同じシーケンスが生成される。 |
| * If the command hash table is empty, bash versions prior to bash-5.1 printed an informational message to that effect, even when producing output that can be reused as input. Bash-5.1 suppresses that message when the -l option is supplied. | | * コマンド・ハッシュ・テーブルが空の場合、bash-5.1より前のバージョンのbashでは、入力として再利用できる出力を生成する場合でも、その旨の情報メッセージが表示された。Bash-5.1では、-lオプションが指定されると、このメッセージが表示されなくなる。 |
|
| |
|
| == RESTRICTED SHELL == | | == RESTRICTED SHELL == |