« Rubyでtypoしたときに「ひぎぃ」と言わせる | メイン | 進法指定の判断方法 »

[.inputrc]は[readline]のなんなのかとその調査過程で得られたもの

機能のひぎぃのentryで日本語が表示されなかったので、@ujihisaにやり方を聞いた。
userのhomeにある[.inputrc]の中に文字コードを指定したりするらしいのだが、このファイルがなんなのかよくわからなかったので調べてみた。
答えは簡単に見つかって、[readline]が読み込むファイルとのこと。
[.bashrc]や[.zshrc]の名前から何らかの設定だとは思っていたが、inputって部分からは[readline]が思いつかなかった。
そもそもreadlineとは何かもよく知らないのでまた調べてみた。
これによると、[readline]はCUIアプリケーションに対して入力支援機能を提供するLibraryとのことである。
つまり、ヒストリ機能やキーバインド等、CUIアプリケーションの作者が実装しなくても、[readline]にリンクを張っておけば良いということらしい。
更に読み進めると、[libedit]というものもあることを知った。
([.inputrc]がここにも書いてありましたとさ。)
[readline]はGPLライセンスらしい。LGPLではない。つまりリンクを張ってmakeしてしまうとbuildされたアプリケーションもGPLになってしまうということ。
これを嫌ったNetBSD界隈で作成されたのが[readline]と互換性を持った[libedit]らしい。
運の良いことにこの直後、@yharaから偶然にも[rlwrap]を教えてもらった。
本当に運が良い。
[readline]にリンクしていないCUIアプリケーションをwrappingし、[readline]を使えるようにしてしまうらしい。
例えば、[gosh]を[rlwrap]でラップして起動したい場合、
rlwrap gosh
となる。
個人的な見解ではあるけども[rlwrap]の使用方法から考えると、[readline]にリンクしてGPLライセンスに縛られなくても[rlwrap]を経由することで[readline]の機能を使えるということではないだろうか。
つまり、本来なら[readline]<=>[CUIアプリケーション]には明示的なリンクが張られ、[CUIアプリケーション]はGPLライセンスとなる。
しかし、[readline]<=>[rlwrap]に明示的なリンクをさせることで[rlwrap]はGPLライセンスとなるが、[rlwrap]<=>[CUIアプリケーション]は使用者が任意に行う為に、[CUIアプリケーション]はどのようなライセンスでも可能なのではないだろうか。
私がMIT派とかGPL派とか関係なく、この仕組みを考えて実装したアイディアに驚いた。

トラックバック

このエントリーのトラックバックURL:
http://www.kanasansoft.com/cgi/mt/mt-tb.cgi/90

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google