自作シェルの進捗(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というディレクトリがあり、そのなかにテストスクリプトが入ってます。使い方はこんな感じ。(手練れ向けで、細かいトラップまで考慮してないのでご容赦ください。)

  1. リポジトリのなかで./configureしてmake
  2. 最新のUbuntuだと一箇所「ヘッダファイルが明示的に指定されていない」とエラーが出るので修正
  3. make testあるいはtestsのなかで、THIS_SH=<テストしたいシェル> ./hogehoge.testを実行

みなさんも手持ちの自作シェルで試してみてください(?)

自作シェルのテストリポジトリを作った

 で、このリポジトリをフォークして、自作シェルのテスト用のリポジトリを作りました。このなかのsush_testというディレクトリのなかに、Bashと自作シェルを比較するためのシェルスクリプトと、gnuplotでグラフを描くシェルスクリプトを置きました。本日時点でのグラフはこんな感じです。

各折れ線グラフは

  • PASSED: 全84のテストスクリプト中でBashと違いが出なかったものの数
  • NOT PASSED: bashsushで違いが出たスクリプトの数
  • DNF: 途中で止まったスクリプトの数(面倒なのでNOT PASSEDには入れてません)
  • TOTAL LINES of DIFF: 全スクリプトに対してbashの出力とsushの出力をdiffで比較したときのdiffの出力の行数

を表してます。TOTAL LINESが減っていたり、PASSEDの数が増えていたりすれば、「上田研究さぼってるなあ」ということになります。グラフは自作シェルのリポジトリのトップページに掲載していますので、毎日気にしていただけると幸いです。

 sush_testの中身は、最初rusty_bashのリポジトリの中に置いていました。しかしこれだと、開発用のalphaブランチでテストをした結果をmainブランチのREADMEに反映するのがめちゃくちゃ面倒なので、分けました。

グラフを掲載するようにした結果・・・

 更新するのが楽しいのでつい開発してしまい、冒頭のように研究そっちのけになってます。いかん。最後に宣伝ですが、Software Designで3年にわたって連載している「魅惑の自作シェルの世界」もよろしくおねがいしまーす。

 余力があれば今日中に技術面での話も書きます。

ノート   このエントリーをはてなブックマークに追加 
 

prev:bash-completionと自作シェルその後 next:自作シェルの進捗(2025年3月29日その2)

やり散らかし一覧

記事いろいろ