zshをつかってみた。

(※最初は、「zshがヤバすきるけんについて」だったんだけど、ヤバくはなかったのでタイトル変えました。)


今までシェルといえば、Fedora/RedHat系の標準シェルのbashを使ってきたんだけど、

2006-05-17 - はてな技術発表会日記 - 機能変更、お知らせなど

で, "はてのくん" ことにちゃん id:secondlifezshについて語っているのを見て、興味が出てきたのでやってみた。

DebianFedora/RedHatでいろいろ違ってたのでメモ。


とりあえず、yumdownloader使って、SRMSからプラットホーム最適化バイナリ作って入れる。

# yumdownloader --source zsh
# rpmbuild --rebuild --target=i686 zsh-xxx.src.rpm (/usr/lib/rpm/redhat/rpmrc に予め最適化オプション指定しとく)

で、zsh-xxx.i686.rpmzsh-html-xxx.i686.rpm を入れる。



設定は、基本的に自分しか触らないサーバなので、とりあえず /etc/zshrc に必要な設定をしておく。

  • Autocomplete(Completion)をデフォルトでON
  • プロキシ

# vi /etc/zshrc
...
autoload -U compinit; compinit
...
export http_proxy=http://proxy.xxx.co.jp:xxxx/
export ftp_proxy=ftp://proxy.xxx.co.jp:xx/
...

あと、bashと違ってデフォルトだとコマンド履歴がメモリ格納だけで、ログオフすると消えて不便なので、横着プログラミング 第3回: 履歴マニアを参考にファイルに保存するようにした。

vi ~/.zshrc
...
HISTFILE=$HOME/.zsh-history
HISTSIZE=100000
SAVEHIST=100000
setopt extended_history
function history-all { history -E 1 }
...

コマンド履歴の設定を /etc/zshrc に書かなかった理由は特にないけど。とりあえず。

あと、yum が辞書ファイルがFedora Core 5, RHEL4 ともになかったので、Completion for yumあたりからコピってきて、/usr/share/zsh/4.x.x/functions/ に "_yum" というファイル名で置いておく。
(最初、Completionってフォルダ無いじゃん! とかって思ってたら、functionフォルダに置いてるということに気づいた…)



で、使ってて思ったのは、bashよりたしかに便利なんだけど、完全にzshにいけるかというとそうでもない。

  • コマンドの引数とかに "*"をワイルドカードで使おうとするとうまくいかない
  • コマンド引数とかコンパイルオプションでパスを渡したいときに、保管がされない
  • bashと違って、"&"でバックグランド実行させても、ログアウトしようとするとバックグラウンドの処理も終了しちゃう
  • "./configure --"でコンパイルオプションが出てくれるんだけど、メジャーなオプションしかでない

などなど。

まぁ、まだまだ設定が未熟だったり、単に辞書ファイルの問題だったりするんだけど、しばらくbashとzsh両方使うことになりそうだなぁ。