{"id":13529482,"url":"https://github.com/magicant/yash","last_synced_at":"2025-03-29T15:02:45.910Z","repository":{"id":5628747,"uuid":"6836837","full_name":"magicant/yash","owner":"magicant","description":"Yet another shell","archived":false,"fork":false,"pushed_at":"2024-05-11T03:22:40.000Z","size":8228,"stargazers_count":288,"open_issues_count":18,"forks_count":25,"subscribers_count":15,"default_branch":"trunk","last_synced_at":"2024-05-20T03:19:19.508Z","etag":null,"topics":["c","posix-sh","shell"],"latest_commit_sha":null,"homepage":"http://magicant.github.io/yash/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magicant.png","metadata":{"files":{"readme":"README.ja.md","changelog":"history.c","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-11-24T05:54:20.000Z","updated_at":"2024-06-08T02:52:03.631Z","dependencies_parsed_at":"2024-01-07T14:36:18.887Z","dependency_job_id":"e8d78cc1-11e7-4a11-832f-8d688d3687bf","html_url":"https://github.com/magicant/yash","commit_stats":{"total_commits":3646,"total_committers":3,"mean_commits":"1215.3333333333333","dds":0.2026878771256171,"last_synced_commit":"b83905d458bb858855360bc5cfb610a8d0c14af6"},"previous_names":[],"tags_count":87,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicant%2Fyash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicant%2Fyash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicant%2Fyash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicant%2Fyash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magicant","download_url":"https://codeload.github.com/magicant/yash/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244966500,"owners_count":20539795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","posix-sh","shell"],"created_at":"2024-08-01T07:00:36.739Z","updated_at":"2025-03-22T14:04:34.228Z","avatar_url":"https://github.com/magicant.png","language":"Shell","readme":"Yash: yet another shell\n=======================\n\nhttps://magicant.github.io/yash/ja/\nThis README is also available in [English](README.md).\n\n\nこのプログラムは C 言語 (C99: ISO/IEC 9899:1999, JIS X 3010:2003) で\n書いた Unix 系 OS 用コマンドライン端末シェルです。Yash は世界で最も\n正確な POSIX 規格準拠を目指しながらも、対話シェルおよびシェルスクリプト\n実行プログラムとして便利な機能を備えています。\n\n * グローバルエイリアス\n * 配列\n * ソケットリダイレクト・パイプリダイレクト・プロセスリダイレクト\n * ブレース展開・拡張パス名展開\n * 数式展開での小数の計算\n * プロンプトコマンド\n * コマンドが見付からないときのハンドラー\n * コマンドライン補完 (100 個以上のコマンドに対する補完設定付き)\n * コマンド履歴に基づくコマンドラインの推定\n\nこのプログラムは GNU General Public License (Version 2) の元で自由に\n再配布・変更などができます。その代わり、プログラムの利用は全て各自の\n自己責任の下で行っていただくことになります。作者はプログラムの瑕疵に\n対して一切責任を取りません。ライセンスの本文については [COPYING](COPYING)\nファイルを参照してください。\n\nこのプログラムの開発は [GitHub](https://github.com/magicant/yash) で\n管理されています。\n以前は [OSDN](https://osdn.jp/projects/yash/) で管理されていました。\n\n\n## 開発状況\n\nYash は既に POSIX.1-2008 (IEEE Std 1003.1, 2016 Edition) を全てサポート\nしています (ただし下記制限事項を除く)。\n\nYash は安定しています。バグ修正のためのバージョンアップはおおよそ三箇月\nに一度リリースされます。変更履歴は [NEWS.ja](NEWS.ja) ファイルにあります。\n\n\n## 要件\n\nSoftware Development Utilities オプションと C-Language Development\nUtilities オプションを備えた任意の POSIX.1-2001 環境でビルド・実行\nできるはずです。\n\n今のところ yash の動作は主に Fedora と macOS と Cygwin で検証されて\nいます。\n\n\n## インストール\n\nYash をビルドしインストールする方法については [INSTALL.ja](INSTALL.ja)\nファイルを 参照してください。\n\nインストール後、マニュアルは\n\n    $ man yash\n\nで参照できます。また \u003chttps://magicant.github.io/yash/doc/ja/\u003e で\nオンラインで読むこともできます。\n\n\n## 基本設定\n\n以下は、yash を使い始めるにあたって有用な設定の手引きです。設定の詳細は\nマニュアルを参照してください。\n\n### 初期化スクリプト\n\nYash がログインシェルとして起動されたとき、`~/.yash_profile` を読み込み\nます。このファイルはシェルスクリプトとして実行されます。この中で\nexport コマンドを使うことで環境変数を設定できます。\n\nYash が対話シェルとして起動されたとき、(`~/.yash_profile` も読み込む場合\nはその後で) `~/.yashrc` を読み込みます。この中でエイリアス、プロンプト、\nコマンド行編集のキーバインド設定、コマンドが見付からないときのハンドラ\nー等を設定します。サンプルとして [share/initialization/sample](\nshare/initialization/sample) ファイルを参考に自分用の `~/.yashrc`\nを設定してください。\n\n### Yash をログインシェルにする\n\n多くの Unix 系 OS では、ログインシェルとして使用可能なシェルは\n`/etc/shells` ファイルに名前が挙げられている必要があります。このファイル\nを編集し、yash へのパスがファイルに含まれているようにしてください。\n\nその後、端末で `chsh` コマンドを実行してログインシェルを yash に変更し\nてください。環境によってはこれ以外の方法でログインシェルを設定するよう\nになっているかもしれません。詳しくはお使いの環境のマニュアルを参照くだ\nさい。\n\n\n## 実装上の注意事項\n\n * C 言語では、ナル文字は文字列の終わりを表します。そのため、入力した\n   ファイルの内容や文字列にナル文字が含まれているとそれ以降の部分が正\n   しく処理されなくなってしまいます。\n * ソース内の随所で GCC の拡張機能である `__attribute__` キーワードを\n   使用しています。GCC および Clang 以外の環境ではプリプロセッサによっ\n   て消去するようにしていますが、`__attribute__` 識別子を他の用途で使\n   用している処理系ではコンパイルに支障をきたすかもしれません。他にも\n   いくつか '_' で始まる識別子を使用しているため、非常に特殊な環境では\n   正しくコンパイルできないかもしれません。\n * いくつかのシグナルは特定の番号を持っていると仮定しています:\n     SIGHUP=1 SIGINT=2 SIGQUIT=3 SIGABRT=6\n     SIGKILL=9 SIGALRM=14 SIGTERM=15\n * POSIX は対話的でないシェルが SIGTTIN, SIGTTOU, SIGTSTP をデフォルト\n   で無視・キャッチすることを禁じています。しかし yash はジョブ制御が\n   有効な時は対話的でなくてもこれらのシグナルを無視します。\n * ファイルアクセス権フラグは特定の値を持っていると仮定しています:\n   ```\n   0400=user read    0200=user write   0100=user execute\n   0040=group read   0020=group write  0010=group execute\n   0004=other read   0002=other write  0001=other execute\n   ```\n * POSIX ロケール以外のロケールでの文字クラスの分類は POSIX ロケールで\n   の分類と上位互換であると仮定しています。\n * `-o nolog` オプションには対応していません。(無視されます)\n * POSIX によると、`PS1` 変数の値はパラメータ展開されることになっていま\n   す。Yash ではさらに `PS1` 変数の値に対してコマンド置換と数式展開も行\n   います。これは実装上の都合によるものです。\n * POSIX によると、コマンド `printf %c foo` は文字列 `foo` の最初のバ\n   イトを出力することになっています。Yash では `foo` の最初の文字を出\n   力するので、出力が複数バイトになることがあります。\n * トラップの中で `return` 組込みコマンドを実行しても、トラップの外で\n   実行されている関数やスクリプトを中断・続行させることはできません。\n   この挙動は厳密には POSIX に従っていませんが、予測可能で一貫性のある\n   動作を保つためにこのようになっています。\n * パス名展開の結果はその時のロケールでの辞書順でソートされます。\n   ロケールの順序定義が全順序でない場合、比較不可能な結果同士の順序は\n   不定です。この挙動は厳密には POSIX に従っていませんが、POSIX\n   ロケールでのバイト単位再比較がワイド文字では不可能なためこのように\n   なっています。\n * プログラム全体に亘って文字列がワイド文字として扱われているため、yash\n   のほとんどの機能は有効な文字を表さないバイト列を透過的に扱うことが\n   できません。この設計は、シェルに任意のバイトを受け付けることを求める\n   要件が POSIX に追加される前に行われたもので、今後この要件をサポート\n   することは現実的ではありません。\n\n\n## 既知の問題\n\n * 行連結を含む複雑な展開があると行番号 (`$LINENO`) が正しく計算されない\n   ことがあります。\n * Solaris では一部のロケールで非 ASCII 文字が正しく扱われないことが\n   あります。`config.h` ヘッダーファイルで `HAVE_WCSNRTOMBS` マクロの定義\n   を削除してビルドすると問題を回避できるかもしれません。\n\n\n## お知らせ\n\n感想・提案・バグ報告等を歓迎します。ただし、全ての提案やバグ報告に\n応じることを約束するものではありません。\n\n * [課題管理システム](https://github.com/magicant/yash/issues)\n * [掲示板](https://github.com/magicant/yash/discussions)\n\n翻訳に興味がおありの場合は\n[TRANSLATING.md](TRANSLATING.md) をご覧ください\n\n\n----------------------\n渡邊裕貴 \u003cmagicant@wonderwand.net\u003e\n","funding_links":[],"categories":["Shell","Shells"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagicant%2Fyash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagicant%2Fyash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagicant%2Fyash/lists"}