自作シェルの進捗(2025年3月29日)
Sat Mar 29 15:25:16 JST 2025 (modified: Sat Mar 29 17:18:05 JST 2025)
views: 362, keywords:自作シェル,rusty_bash,寿司シェル
なんか春休みで研究そっちのけで自作シェル(rusty_bash、sush、寿司シェルといろんな呼び名で呼ばれているやつ)を開発してます。(研究以外の仕事はちゃんとやってますねんのため。)
最近はポツポツと海外からのissueが来てます。Bashみたいなデカいシェルをほぼスクラッチ状態から作るのは手分けしたとしても時間がかかるので、たぶんそんなアホなことやってる人は地球上でそんなにおらんだろうと思います。
Bashの公式リポジトリのテスト
海外から「ちゃんと公式のテストを使え。グラフも描け」と言われて対応しました。
Bashの公式リポジトリはココにありますが、そのリポジトリの中にtests
というディレクトリがあり、そのなかにテストスクリプトが入ってます。使い方はこんな感じ。(手練れ向けで、細かいトラップまで考慮してないのでご容赦ください。)
- リポジトリのなかで
./configure
してmake
- 最新のUbuntuだと一箇所「ヘッダファイルが明示的に指定されていない」とエラーが出るので修正
make test
あるいはtests
のなかで、THIS_SH=<テストしたいシェル> ./hogehoge.test
を実行
みなさんも手持ちの自作シェルで試してみてください(?)
自作シェルのテストリポジトリを作った
で、このリポジトリをフォークして、自作シェルのテスト用のリポジトリを作りました。このなかのsush_test
というディレクトリのなかに、Bashと自作シェルを比較するためのシェルスクリプトと、gnuplotでグラフを描くシェルスクリプトを置きました。本日時点でのグラフはこんな感じです。
本日の進捗 #自作シェル pic.twitter.com/lkv4e6JcZd
— 上田隆一 (@ryuichiueda) March 29, 2025
各折れ線グラフは
- PASSED: 全84のテストスクリプト中でBashと違いが出なかったものの数
- NOT PASSED:
bash
とsush
で違いが出たスクリプトの数 - DNF: 途中で止まったスクリプトの数(面倒なので
NOT PASSED
には入れてません) - TOTAL LINES of DIFF: 全スクリプトに対して
bash
の出力とsush
の出力をdiff
で比較したときのdiff
の出力の行数
を表してます。TOTAL LINESが減っていたり、PASSEDの数が増えていたりすれば、「上田研究さぼってるなあ」ということになります。グラフは自作シェルのリポジトリのトップページに掲載していますので、毎日気にしていただけると幸いです。
sush_test
の中身は、最初rusty_bash
のリポジトリの中に置いていました。しかしこれだと、開発用のalphaブランチでテストをした結果をmainブランチのREADMEに反映するのがめちゃくちゃ面倒なので、分けました。
グラフを掲載するようにした結果・・・
更新するのが楽しいのでつい開発してしまい、冒頭のように研究そっちのけになってます。いかん。最後に宣伝ですが、Software Designで3年にわたって連載している「魅惑の自作シェルの世界」もよろしくおねがいしまーす。
余力があれば今日中に技術面での話も書きます。