自作シェルでbash-completionが動き始めた

Mon Feb 17 11:46:43 JST 2025 (modified: Mon Feb 17 18:43:23 JST 2025)
views: 347, keywords:自作シェル, sush, 寿司シェル, bash-completion

 ほんとは今年の正月に決着をつけるつもりだったのですが、連載で作っているRust製の自作シェル(Rusty Bash、和名は寿司シェル)で、やっとbash-completionが動くようになりました。

bash-completionってなに

 bash-completionというのはメジャーどころのLinux環境のBashならデフォルトで動いている、シェルの補完機能です。たとえばBashでls --と打ってタブを押すと、


   ueda@x1gen13:~$ ls --
   --all                                      --ignore=
   --almost-all                               --indicator-style=
   --author                                   --inode
   --block-size=                              --kibibytes

というようにロングオプションの候補が出てきますが、これは、この変態シェルスクリプトで動いています。この補完候補は、bash-completionがls --helpを起動して、出力からロングオプションをBashの正規表現機能でスクレイピングして出力しています。変態です。

寿司シェルの状況

 上の例については自作シェル(dev-completionブランチ)でも、

というように動きました。あとは、ファイル名の補完も自分で書いたものから変更して、bash-completionのものを使うようにしました。ただ、まだbash-completionがつかっているBashの全機能を信頼性高く実装しているわけではないので、たまにエラーやワーニングが出ます。

 次はgitの補完機能を動かそうとしています。ただ、他のコマンドと違って少々特殊なので、まだどうやってやるか、現状の寿司シェルでなんで動かないかは把握できてません。

結構大変なんだけどひっそりと開発

 bash-completionへの対応は、2024年の5月に

と言ってから開始しだしたので、ほぼ10ヶ月かかりました。かなりの工数がかかるので、bash-completionが動く自作シェルはBashと、あといくつかしか存在しないと思われます。

 ただ結構大変な割に、自分自身の営業不足であんまりネットがざわざわしておりません。変態geek行為をしていれば勝手に盛り上がった昔とは違うんです・・・違うんです・・・。ということで、ちょっとでも寿司シェルに興味を持ってもらうため、なんで作っているのか書いておくと、

  • 自分でコードをいじれるシェルがあると嬉しいな
  • シェルもいつか(数十年後?)脱C言語しなければならなくなると思うので、そのときに選ばれると嬉しいな
  • 自分で作りもせずにシェルの専門家名乗ってきてすみません(名乗ってないけど事実上)

くらいに考えてのことです。上のふたつになにか心がひかれるなら、乗っかっていただければ幸いです。特にOSかなにかにバンドルされるようになると嬉しいので、もしなんかそういう活動がしたい人はご協力お願いいたします。それから、あとはコードの質問はなるべく返事しますので、Rustの勉強にもご活用ください。また、敷居の低い参加方法としては、未実装の部分でもなんでもいいから、issueに「Bashはこう動くけど寿司シェルは違う」と書いていくという方法があるかと(当面は日本語でおkで)。

 現場からは以上です。なにとぞなにとぞよろしくお願いいたします。

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

prev:自作シェルの端末まわりで困ってる問題についてメモ書き next:bash-completionと自作シェルその後

やり散らかし一覧

記事いろいろ