Yash: yet another shell
http://yash.osdn.jp/
=======================


Yash は POSIX.1 (IEEE Std 1003.1, 2013 Edition) 規格に (ほぼ) 準拠して
いるコマンドラインシェルです。Bash や ksh などの他のシェルよりもより厳
密に規格に準拠しています。

POSIX で定められた機能の他にも yash は以下のような機能を備えています
  * グローバルエイリアス
  * 乱数
  * ソケットリダイレクト等の特殊なリダイレクト
  * 右プロンプト
  * コマンドライン補完


Yash は GNU General Public License (GPL) version 2 の元で配布されるフ
リーソフトウェアです。GPL に従う限りあなたは本ソフトウェアを自由に複製
・改変・使用・配布することができますが、一切の保証はありません。 GPL 
の本文については COPYING ファイルを参照してください。

Yash をビルドしインストールする方法については INSTALL.ja ファイルを参
照してください。


===== 実装上の注意事項 =====

 * C 言語では、ナル文字は文字列の終わりを表します。そのため、入力した
   ファイルの内容や文字列にナル文字が含まれているとそれ以降の部分が正
   しく処理されなくなってしまいます。
 * 符号付き整数の演算・型変換においてオーバーフローが発生した場合でも
   エラーにならずに (処理系定義の) 何らかの整数値が返されることを仮定
   しています。
 * ソース内の随所で GCC の拡張機能である __attribute__ キーワードを使
   用しています。GCC 以外の環境ではプリプロセッサによって消去するよう
   にしていますが、__attribute__ 識別子を他の用途で使用している処理系
   ではコンパイルに支障をきたすかもしれません。他にもいくつか '_' で始
   まる識別子を使用しているため、非常に特殊な環境では正しくコンパイル
   できないかもしれません。
 * いくつかのシグナルは特定の番号を持っていると仮定しています:
     SIGHUP=1 SIGINT=2 SIGQUIT=3 SIGABRT=6
     SIGKILL=9 SIGALRM=14 SIGTERM=15
 * POSIX は対話的でないシェルが SIGTTIN, SIGTTOU, SIGTSTP をデフォルト
   で無視・キャッチすることを禁じています。しかし yash はジョブ制御が
   有効な時は対話的でなくてもこれらのシグナルを無視します。
 * ファイルアクセス権フラグは特定の値を持っていると仮定しています:
     0400=user read    0200=user write   0100=user execute
     0040=group read   0020=group write  0010=group execute
     0004=other read   0002=other write  0001=other execute
 * POSIX ロケール以外のロケールでの文字クラスの分類は POSIX ロケールで
   の分類と上位互換であると仮定しています。
 * -o nolog オプションには対応していません。(無視されます)
 * POSIX によると、PS1 変数の値はパラメータ展開されることになっていま
   す。Yash ではさらに PS1 変数の値に対してコマンド置換と数式展開も行
   います。これは実装上の都合によるものです。
 * POSIX によると、コマンド `printf %c foo' は文字列 `foo' の最初のバ
   イトを出力することになっています。Yash では `foo' の最初の文字を出
   力するので、出力が複数バイトになることがあります。
 * トラップの中で break, continue, return 組込みコマンドを実行しても、
   トラップの外で実行されている関数やスクリプトを中断・続行させること
   はできません。この挙動は厳密には POSIX に従っていませんが、予測可能
   で一貫性のある動作を保つためにこのようになっています。


===== お知らせ =====

感想・提案・バグ報告等を歓迎します。ただし、全ての提案やバグ報告に
応じることを約束するものではありません。

翻訳に関しては以下のページをご覧ください
https://osdn.jp/projects/yash/wiki/HowToTranslate


======================
Magicant <magicant@users.osdn.me>
