Download List

Project Description


Yet another shell (yash) is a POSIX-compliant command line shell, featuring more strict POSIX compliance than those of other shells, as well as powerful command line editing.

System Requirements

System requirement is not defined

Released at 2023-02-25 19:00
yash 2.54 (2 files Hide)

Release Notes

Yet another shell, version 2.54.

Yet another shell バージョン 2.54


Yash 2.54 (2023-02-25)

  • Added: Changing font style of command line predictions with $PS1P, etc.
  • Added: The '--le-trim-right' option.
  • Changed: When the POSIXly-correct mode is active, the shell now refuses to execute built-ins POSIX XCU 2.9.1 lists as utilities that cause unspecified results. To implement the new behavior, the previous "semi-special" built-ins are now categorized in either of the new categories "mandatory" and "elective". The "command" and "type" built-ins now report the new categories of such built-ins.
  • Changed: The shell now requires a corresponding external executable to exist in $PATH when running a built-in that works like a standard external utility even when the POSIXly-correct mode is inactive. Such built-ins are now categorized as "substitutive" built-ins.
  • Changed: The "array" built-in is now completely ignored in the POSIXly-correct mode. The built-in, formerly a regular built-in, is now categorized as an "extension" built-in.
  • Changed: The xtrace option is now ignored while expanding the $PS4 variable to prevent possible infinite recursion.
  • Fixed: The allexport option was wrongly ignored in many assignment contexts.
  • Fixed: The errexit and errreturn options now work for assignment error in a for loop.
  • Fixed: The ">" redirection with the noclobber option no longer hangs when the operand names a symbolic link to a non-existing file.
  • Fixed: The exported value of the $DIRSTACK variable was not being updated correctly in the "pushd" and "popd" built-ins.
  • Fixed: The effect of "!" no longer applies to the exit status of the "break", "continue", and "return" built-ins.
  • Fixed: An alias value ending with a blank followed by a line continuation no longer subjects the next token to alias substitution.
  • Updated the sample initialization script (yashrc):
    • Added: The "o" alias for WSL

Yash 2.54 (2023-02-25)

  • 追加: $PS1P 等の変数でコマンドライン推定の表示フォントスタイルを調整できるようにした
  • 追加: --le-trim-right オプション
  • 変更: POSIX 準拠モードでは、POSIX XCU 2.9.1 で動作を規定しないコマンドとして挙げられている組込みの実行を拒否するようにした。準特殊組込みという分類を廃止して必須組込みと任意組込みに分けた。"command" と "type" 組込みが表示する組込みの分類を併せて変更。
  • 変更: POSIX で定義されている外部コマンドと同じ働きをする組込みを実行するには、POSIX 準拠モードがオフでも、$PATH に対応する外部コマンドが存在することを要求するようにした。これに該当する組込みは今後は代替組込みと分類する。
  • 変更: "array" 組込みを通常の組込みから拡張組込みに変更。POSIX 準拠モードでは完全に存在が無視されるようになった
  • 変更: xtrace オプションは $PS4 を展開する間は再帰的に動作しないようになった
  • 修正: allexport オプションが多くの場面で効いていなかった
  • 修正: errexit および errreturn オプションが for ループでの代入エラーに効いていなかった
  • 修正: -C オプションが有効な時、存在しないファイルを指すシンボリックリンクを ">" リダイレクトで開こうとすると無限ループしていた
  • 修正: $DIRSTACK 変数がエクスポートされているとき、"pushd" および "popd" 組込みで $DIRSTACK 変数の値が正しく更新されていなかった
  • 修正: "break", "continue", "return" 組込みの終了ステータスが "!" で反転されていた
  • 修正: エイリアスの値が空白と行連結で終わる場合に、行連結を取り除くと値が空白で終わることから、誤って次のトークンをエイリアス置換の対象にしていた
  • 初期化スクリプト (yashrc) のサンプルを更新:
    • 追加: WSL 用の "o" エイリアスを定義