mruby-eshellのご紹介
この記事はmruby Advent Calendar 2013の記事です。
本当はμOSvでTwitterクライアントをテストしたかったんですが、大幅に予定の日をオーバーしてしまっていたので取り敢えずmruby-eshellのことを書きます。
一言で言うと、mrubyで書かれたシェルです。
コードはこのへんから。
μOSvを作ったときに、丁度良いpure-mrubyなシェルが見当たらなかったので書きました。
コード自体は150行程度のごくごく小さなもので、これ自体にそれほど大きな価値はないです。
が、取り敢えず、何も無いときにmrubyプログラムのランチャーになるものがあるとそれなりに便利です。
ちょっと古いですが操作してる画面はこちら:
pure-mrubyで書かれていますが、mrbgemとしてビルドすればmrubyバイナリに内蔵された状態になるので、ファイルシステム経由で外部からソースコードを与えて実行する必要はありません。
よって、多少削らないとならないはずですが、本質的にはファイルシステムがなくmruby-dirをconf.gemに含めていない環境でも利用可能であるはずです。
ビルドはbuild_config.rbをこんな感じにして、makeすればOKです。
conf.gem :core => "mruby-eval" conf.gem :core => "mruby-exit" conf.gem :git => 'https://github.com/iij/mruby-io.git' conf.gem :git => 'https://github.com/iij/mruby-regexp-pcre.git' conf.gem :git => 'https://github.com/iij/mruby-dir.git' conf.gem :git => 'https://github.com/syuu1228/mruby-eshell.git'
実行は、こんな感じで。
$ ./mruby/bin/mruby -e EShell.run
とくに、mruby on マイコンなどの組み込み方向やってる方々に試して頂きたいなーと思います。
あるいは、ログインシェルをmrubyにしたい!などと考えている方にも最適です(が、機能が足りなすぎるので追加して下さい、pullreq歓迎です)。