さて、われわれは毎日シェルを使っているわけですが、みなさんはどうやって今のシェルを選んだのでしょうか。
初期設定のままとか、なんとなくとかいう理由の人もいるでしょう。逆に、色々とシェルを渡り歩いて今の結果に行き着いたという人もいるでしょう。
僕の場合、初めはbashを使っていました。どのシェルを使ってもだいたい同じことができるだろうという考えのもと、普通にデフォルトのログインシェルを使っていました。特に困ることもなく、使いこなすということもなく、なんとなく使っていました。
ある日、他の人が使っているtcshの設定ファイルを見る機会がありました。確かそのときの職場に伝わっていた秘伝のtcshrcだったと思います。それはaliasやらなんやら激しくカスタマイズされていました。「おお、こういう世界もあるのか」と、感心しました。
しかし、それを真似しようと調べてみたところ、どうやらtcshには欠陥があるようです。特にtcshには関数がないというではありませんか。関数がない言語で何かをやろうというのは、これはもうアホと言う他ないでしょう。そう思った僕は、今使っているbashで同じようにカスタマイズできないか調べてみました。
そして、「入門bash」という本にたどり着きました。この本にはbashのすべてが書かれていました。本を参考にして、自分の思った通りにbashをカスタマイズしました。そうやって作った環境は大変快適でした。その作った環境に一通り慣れて、シェルの設定はこんなもんだろうと思っていました。
そんなある日、zshに出会いました。きっかけはWebサイトの紹介記事でした。「とりあえず補完機能だけでも試してみろ」という記事につられて使ってみたところ、衝撃を受けました。Tabキーを押すだけで、ここまでのことができるのか。コマンドのオプションやらなんやら、何でも補完するではありませんか。tarコマンドの補完にいたっては、Tabキーを押すとtarボールの中身を展開して中に含まれているファイル名まで補完してくれます。
コマンドラインの操作でここまでのことをやるのか。Tabを押すたびに外部のコマンドをいくつも呼ぶという、そんなマシンを酷使するようなことをやっていいのか。zshには妥協とか節約とか、そういう後ろ向きなセコい発想は一切ありません。コンピュータは人間に使われるためにあるのです。何も使わずに資源を余らせておくのは無駄です。便利にできることがあればすべてやります。zshは後退のネジが壊れています。
これは革命だ。その日から僕のzsh生活は始まりました。
zshの機能は非常に豊富で、何年たっても終わりが見えませんでした。毎日夢中になってカスタマイズしていました。そのたびに僕の環境は便利に、快適になっていきました。
しかし、そんな日々も少しずつ終わりが近づいてきていました。だいたい思いつくところで一通りカスタマイズができました。十分カスタマイズできたという喜びと、もうカスタマイズできないという悲しみと、両方の気持ちが湧いてきました。
今、僕のzsh環境は安定しています。ちょうどzshを知る前のbash環境が安定していたのと同じです。もし将来zshを上回る衝撃的なシェルがあれば、僕は乗り換えます。いつでも一番良いシェルを使っていたいと思っています。そして、僕にとって現在一番良いシェルはzsh以外にありません。僕にとってのシェルは、そしてzshとは、そういうものです。