https://magicant.github.io/yash/
さらに別のシェルであるYashは、C99(ISO/IEC 9899:1999)で書かれたPOSIX準拠のコマンドラインシェルです。 Yashは、毎日のインタラクティブおよびスクリプト使用のための機能をサポートしながら、世界で最もPOSIX準拠のシェルになることを目的としています。注目すべき機能は次のとおりです。
YASHは、GNU General Public License(バージョン2)の条件の下で変更/再配布できますが、このプログラムの使用には保証がありません。 GPLの全文については、コピーファイルを参照してください。
YashはGithubで維持されていますが、以前はOSDNに維持されていました。
Yashは現在、POSIX.1-2008(IEEE STD 1003.1、2016エディション)を完全にサポートしています。
Yashは安定しています。メンテナンスの更新は、3か月ごとにリリースされます。変更履歴については、ニュースファイルを参照してください。
Yashは、ソフトウェア開発ユーティリティとC言語開発ユーティリティオプションを使用して、あらゆるPOSIX.1-2001環境を構築および実行することになっています。
現在、Yashは主にFedora、Macos、およびCygwinでテストされています。
インストールファイルを参照して、Yashの構築とインストール方法を確認してください。
インストール後、マニュアルをご覧ください
$ man yash
このマニュアルは、https://magicant.github.io/yash/doc/でオンラインでも入手できます。
以下は、Yashを開始するためにインストール後に見たい基本的な構成の説明です。構成の詳細については、マニュアルを参照してください。
Yashがログインシェルとして開始されると、 $XDG_CONFIG_HOME/yash/profileまたは~/.yash_profileがフォールバックとして読み取ります。このファイルは、エクスポートコマンドを使用して環境変数を定義するシェルスクリプトです。
Yashがインタラクティブに使用されるように開始されると、 $XDG_CONFIG_HOME/yash/rcまたは~/.yashrc (ログインシェルの場合は$XDG_CONFIG_HOME/yash/profileを読んだ後)を読み取ります。このファイルでは、エイリアス、プロンプト文字列、コマンドラインの編集用のキーバインディング、コマンドなしのハンドラーなど、他の構成を作成します。 $XDG_CONFIG_HOME/yash/rcテンプレートとして共有/初期化/サンプルファイルを使用します。
多くのUNIXのようなOSでは、ログインシェルとして設定するために/etc/shellsにシェルをリストする必要があります。このファイルを編集し、Yashへのパスがファイルに記述されていることを確認してください。
次に、端末でchshコマンドを実行し、コマンドの指示に従います。システムによっては、別のコマンドを使用してログインシェルを変更する必要がある場合があります。システムのドキュメントを参照してください。
__attribute__はソースコードで使用されます。 GCCまたはClangにコンパイルされていない場合、このキーワードはプリプロセッサによって削除されるため、一般的に害はありません。ただし、コンパイラが他の目的でこのキーワードを使用すると、コンパイルが失敗する可能性があります。さらに、 _で始まる他の識別子の一部は、一部のまれな環境で編集エラーを引き起こす可能性があります。 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
-o nologオプションはサポートされていません。静かに無視されます。PS1の値はパラメーター拡張の対象となります。 Yashは、 PS1値でコマンド代替と算術拡張を実行します。printf %c foo文字列fooの最初のバイトを印刷する必要があります。 Yashはfooの最初のキャラクターを印刷します。これは複数のバイトである可能性があります。return 、トラップ内で実行された関数、スクリプト、またはループでのみ動作できます。この制限は厳密にPOSIX準拠ではありませんが、シェルの一貫した予測可能な動作に必要です。$LINENO )は、ラインの継続を含む複雑な拡張後に正しくカウントされることはできません。config.hヘッダーファイルにHAVE_WCSNRTOMBSマクロを定義することで回避できます。 コメント、提案、およびバグレポートは次のように歓迎します。
翻訳に興味がある場合は、翻訳を参照してください。md。
ワタナベ、Yuki [email protected]