【コラム】

漢の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行だ。早速設定しておこう。

    autoload -U compinit
    compinit

    この2行をホームディレクトリの.zshrcファイルに追加することで、zshの強力な補完機能への扉が開かれる。最初の数回は基本的な設定内容を説明するが、そのあとは早速この補完機能の詳細設定に入るつもりだ。

    .zshrcに加えた内容を次のコマンドでシェルに教えて、早速その効果を確かめてみよう。

    % source ~/.zshrc

    この状態で"ls -"と入力して"Tab"キーを押すと……

    % ls -
    -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"キーを押すと……

    % tar
    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"キーを使った補完を堪能してみよう。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン