Friday 21 April 2006

zsh



去年の3月から、zsh に乗り換えました。UTF-8サポートがないのは知っていたんだけど、tcsh に、そろそろ我慢できなくなって来て。遅すぎるっていう説もある。Mac OS X/Linux のdefault のbash にしなかったのは、「bash のソースを読んだことがあるから」。絶対に使わないと決意しました。が、/bin/sh は bash なので、そういう決意は意味がない。

で、zsh 4.3.2 を --enable-multibyte でcompileして、晴れて、UTF-8 conscious に。うれしいです。特に、日本語ファイルの listing と completion が出来るのは幸せ。

.zshenv が常に読まれて、.zshrc がinteractive な時に読まれて、login shell では、.zprofile なのね。それはわかりやすい。それだけで、tcsh から逃げる理由だと思う。

300page の巨大なdocumentを読むのは苦痛だったが、「ま、風邪ひいて寝てるときの読み物として面白かった」ってのが当時の感想らしい。

alias history="fc -l -d -$HISTSIZE"

で時間表示できるってあたりを探すのに一苦労。でも、grep hoge **/* とか出来るのはやっぱりうれしい。

tcsh がダメな理由

 function がない。致命的だと思う。
 foreach とかの multi line command の編集が出来ない。バグだろ?
 シェル変数の展開で空白が悪さをする。言語としての設計がだめだめ。
 特に条件式。a"$file" != a みたいなのが出るのは嫌。
 条件式の能力が低すぎ。
 sh/bash との構文の違いが大きすぎる。といって、C に近いわけでもない。

bash がダメな理由

 実装が汚すぎ。見えなきゃ良いってものでないだろ?
 tab で、file name completion が出来ない。(いや、出来るんだろうけど)
 limit がない。(なんだよ〜)
 job control が怪しい。あのソースなら、そりゃそうだろ。
multi line command を畳んで編集させるのは反則。
 シェル変数の展開で空白が悪さをする。(tcsh と同じ)
 |& がない。$file:r がない。$file:t がない。(まぁ、代わりの方法はあるけどさ)

学生がどれを使うかは自由だが、tcsh から始めるのが、むしろ、逃げ出す楽しみみたいなのがあって良いのかな。

No comments: