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歓迎です)。