【コラム】
漢のzsh
1 最強のシェル、それは「zsh」
2007/02/08
IDEの発展やAjaxなど現在のデベロッパにとってGUIとうまくお付き合いすることは開発効率を上げるうえで必須といえる。しかしながら、シェルというCUI環境も根強い人気がある。GUIと違ったカスタマイズ、アジリティ、効率の良さ、幅広い対応プラットフォームなど、なくてはならないものだ。
本連載ではそうしたCUI環境の充実を補佐することを目的とし、"zsh"について語ってみようとおもう。かつてzshはUTF-8の扱いが弱いところがあったが、それもずいぶんと改善され、ここ1年でzshへ移行しやすい状況が整ってきている。はじめるには悪くないタイミングだ。
最初に軽くzshについて紹介しておこう。
名前につく"z"の文字は、「究極の」という意味がこめられているらしい。系統としてはsh系である。つまり、zshはsh系の超高機能シェルといえるだろう。Linuxなどのユーザーであればsh系であることの意味は語るまでもないだろうが、要はつぶしが利くと捉えておけばいいだろう。
高機能で様々なことができるし、組み込み機能を多く持つので、設定ファイルも簡素になる。この連載がそんな状況の助けになれば幸いだ。基本的な設定、便利な設定、ときには珍妙な設定までzshの機能を紹介していきたいと考えている。ぜひとも活用していただきたい。
これだけはやっとけ - compinit
さて、zshもインストールしただけではただのシェル。「最強」にするには、設定が肝だ。そんな設定の中でも最も基本かつ強力なのが次の2行だ。早速設定しておこう。
compinit
この2行をホームディレクトリの.zshrcファイルに追加することで、zshの強力な補完機能への扉が開かれる。最初の数回は基本的な設定内容を説明するが、そのあとは早速この補完機能の詳細設定に入るつもりだ。
.zshrcに加えた内容を次のコマンドでシェルに教えて、早速その効果を確かめてみよう。
この状態で"ls -"と入力して"Tab"キーを押すと……
-1 -- single column output
-A -- list all except . and ..
-B -- don't list entries ending with ~
-C -- list entries in columns sorted vertically
-D -- generate output designed for Emacs' dired mode
-F -- append file type indicators
-G -- inhibit display of group information
-H -- sizes in human readable form; powers of 1000
-I -- don't list entire matching pattern
-L -- list referenced file for sym link
-N -- print raw characters
-Q -- quote names
-R -- list subdirectories recursively
-S -- sort by size
−−以下省略−−
となるはずだ。また、"tar "と入力して"Tab"キーを押すと……
A -- append to an archive
c -- create a new archive
f -- specify archive file or device
t -- list archive contents
u -- update archive
v -- verbose output
x -- extract files from an archive
となるはず。
実はこの補完、configureスクリプトやmake、antなどのコマンドでも効くのだ。さらに便利なのが、sshやscpといったコマンドでも使える。ためしに"ssh "と入力して"Tab"キーを押してみてほしい。ホストやユーザ名が補完されるはずだ。
zshではあらかじめ多くのコマンドに対して非常に便利な補完機能が用意されている。一度使えば、これなしには生きていけないというくらい病み付きになってしまう。さぁ、既に最強たるゆえんがわかっってきたのではないだろうか?
設定ファイル
さて、先ほど設定を書き込んだ.zshrc、当然zshの設定ファイルなのだが、.zshrc以外にもいくつか存在する。基本的に.zshrcを使えばいいが、今週はこれらを紹介して終わりとしよう。
zshで使われる設定ファイルは基本的には「.zshenv」「.zprofile」「.zshrc」「.zlogin」「.zlogout」の5つ。bash/shとtcsh/cshの設定ファイルの特徴を整理したような組み合わせになっている。
ログインシェルとして起動した場合(要するにzshをユーザアカウントのシェルとして設定しておいてユーザがログインした場合)、ログインシェルではなくただのインタラクティブシェルとして起動した場合、シェルスクリプトを実行するコマンドとして起動された場合、ログインシェルからログアウトする場合でそれぞれ読まれるファイルと順序が決まっている。オプションを指定するなどして順序を変えない限り、次のように読まれるはずだ。
ログインシェルとしてzshが起動された場合
1 ~/.zshenv
2 ~/.zprofile
3 ~/.zshrc
4 ~/.zlogin
インタラクティブシェル(ログインシェルとしてではない)としてzshが起動された場合
1 ~/.zshenv
2 ~/.zshrc
シェルスクリプトを実行するコマンドとしてzshが起動された場合
1 ~/.zshenv
ログインシェルとして起動されたzshからログアウトする場合
1 ~/.zlogout
なので、基本的に設定は.zshrcファイルに書いておけばいい。環境変数を設定するなどログイン時に一度だけ実行すればいいような設定だけ.zprofileに書いておく。一時的にzshをインタラクティブシェルとして起動するような使い方をする場合はぜんぶ.zshrcに書いておけばいい。
.zshenvはシェルスクリプトコマンドとしてzshを実行する場合にも読み込まれるので、予期せぬ設定をしておくとハマることもある。よくわからなければ使わない方がいいだろう。
まずはこんなところだ。さっそくzshをインストールして"Tab"キーを使った補完を堪能してみよう。
目次
【コラム】漢のzsh
ヘッドライン
- IPA、OSS情報データベース「OSS iPedia」を刷新[18:55 3/19]プログラミング
- 東北大、鉄系高温超伝導体におけるディラック電子的振る舞いの観測に成功[18:05 3/19]エレクトロニクス
- 東芝、新潟県柏崎市で新型2次電池量産工場の建設を開始[17:58 3/19]エレクトロニクス
- Symbian、GCCでコンパイラ対応プロジェクト「Software Freedom Fighters」[17:49 3/19]プログラミング
- 伊藤忠商事、戸田工業と共同で北米にリチウムイオン電池正極材工場を建設[17:27 3/19]エレクトロニクス
- 昭和電工、樹脂複合材用カーボンナノチューブの量産を開始[17:04 3/19]エレクトロニクス
- 東北大、巨大超弾性歪みを有する高強度な鉄合金を開発[16:18 3/19]サイエンス
- STMicro、CryptoFirewallセキュリティ機能内蔵のSTB用SoCを開発[16:04 3/19]エレクトロニクス
- SEMI、2009年の半導体材料出荷額を発表 - 総額は前年比18.5%減の346億ドル[15:53 3/19]エレクトロニクス
- 住友大阪セメント、リチウムイオン電池向け高エネルギー密度の正極材を開発[15:37 3/19]エレクトロニクス






