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. So far most of yash's features have been implemented. The author is currently writing auxiliary scripts to make command completion more usable.

Released at 2016-03-20 16:00
yash 2.41

Name Size Hash Date Download count
yash-2.41.tar.gz 1.10 MB 2016-03-20 15:33 17
yash-2.41.tar.xz 681.85 KB 2016-03-20 15:33 23

Release Notes

Yet another shell, version 2.41.

This version includes many bug fixes with some new features.

Yet another shell バージョン 2.41



Yash 2.41

  • + '--emptylastfield' option.
  • + New option for the "shift" built-in: -A
  • + The "shift" built-in now accepts negative counts.
  • + New completion script for: git-notes, git-reflog, git-worktree
  • = The non-interactive shell now exits on an assignment error in a simple command without a command name.
  • = The exit status is now non-zero when a for loop has been interrupted because of an read-only variable.
  • = When there is no positional parameter, the word """$@" is now expanded to an empty word, producing the same result as "$@""".
  • = The behavior of field splitting has been modified to match the intended interpretation of POSIX: If field splitting yields more than one field and the last field is empty, the last field is now removed.
  • = The "read" built-in now removes leading whitespaces when assigning the last input value to the variable.
  • = The first character of $IFS is now always used as a separator when concatenating positional parameters. Previously, $IFS was ignored in some corner cases.
  • * Unclosed process redirections are now detected as syntax error.
  • * When $ECHO_STYLE was GNU or ZSH, the "echo" built-in was incorrectly ignoring single hyphen operands.
  • * The "typeset" built-in was crashing when used with a temporary assignment to a variable not specified in the built-in operands.
  • * In the "typeset" built-in, the -r option was not effective when printing functions.
  • * The "typeset" built-in now detects combination of the -f and -g options as an error.
  • * The "fg" and "bg" built-ins no longer try to resume a non-job- controlled job when given no operand.
  • * In range brace expansion, integers were not always parsed correctly.
  • * The "fc" built-in was not handling the history range correctly when the range was specified with an unused entry number.
  • * The "fc" built-in was incorrectly rejecting the syntax of the form "fc -s foo=bar n".
  • * The interactive shell was unexpectedly forgetting the exit status of background jobs when reporting the job status.
  • * Fixed potential undefined behavior during reading a history file.
  • * Parameter expansions of the form ${foo/bar/baz} are now rejected in the POSIXly-correct mode, as documented in the manual.
  • * Single- or double-quoted empty words were incorrectly being removed in field splitting.
  • * Backslash escapes are now recognized in parameter indexes.


  • +: new feature
  • =: specification change
  • *: bug fix

Yash 2.41

  • + '--emptylastfield' オプション
  • + "shift" 組込みの新しいオプション: -A
  • + "shift" 組込みの引数に負数を指定できるようになった
  • + 補完スクリプトを追加: git-notes, git-reflog, git-worktree
  • = コマンド名の無い単純コマンドで変数代入がエラーになった時、対話シェルでなければすぐにシェルが終了するようになった
  • = For ループが読み取り専用の変数に代入しようとしたときは 0 でない終了ステータスを返すようにした
  • = 位置パラメータが無いとき """$@" を "$@""" と同様に空の単語に展開するようになった
  • = 単語分割での空単語の扱いを POSIX の意図に合わせて変更 (分割結果が二単語以上で最後の単語が空単語の時、空単語を削除するようになった)
  • = "read" 組込みで最後の値を変数に代入するとき先頭に余分な空白を残さないようになった
  • = 位置パラメータを連結するとき常に $IFS の最初の文字で区切るようになった (以前は $IFS が無視される場合があった)
  • * プロセスリダイレクトの閉じ忘れをエラーとして検出できていなかった
  • * "echo" 組込みで、$ECHO_STYLE 変数が GNU または ZSH のとき、単一のハイフンがオペランドとして出力されていなかった
  • * "typeset" 組込みで、引数で指定していない変数への一時代入がある場合にクラッシュしていた
  • * "typeset" 組込みで関数を出力する時 -r オプションが無視されていた
  • * "typeset" 組込みで -f と -g オプションの同時使用をエラーとするようにした
  • * "fg" および "bg" 組込みにオペランドを指定しなかった場合にジョブ制御対象外のジョブを再開しないようにした
  • * 連続した数値のブレース展開で整数が正しく解釈されないことがあった
  • * 存在しない履歴番号を "fc" 組込みのオペランドに指定した場合に間違った範囲の履歴が処理されていた
  • * "fc" 組込みで "fc -s foo=bar n" 形式の構文が使えていなかった
  • * 対話シェルがジョブの状態を報告するときジョブの終了ステータスの記録を消してしまっていた
  • * 履歴をファイルから読み込む際起こり得る未定義動作を修正
  • * ${foo/bar/baz} 形式のパラメータ展開が POSIX 準拠モードで無効になっていなかった
  • * 引用符で囲まれた空の単語が単語分割で誤って削除されていた
  • * パラメータ展開のインデックスでバックスラッシュによるクォートが認識されていなかった


  • +: 新機能
  • =: 仕様変更
  • *: バグ修正