WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

ZSHのインストール

      2012/11/25

ZSHのインストール

zsh(Z shell)はUNIXシェルの一種です。
代表的なシェルとして、Linuxのデフォルトシェルであるbash、FreeBSDなどのBSD系UNIXのデフォルトシェルであるcsh、tcshなどがあります。
zshは各種シェルのいいとこ取りをしたようなシェルで、名前につく”z”の文字には、「究極の」という意味合いがこれられています。

まず、zshがインストールされているか確認します。

[root@centos ~]# zsh --version

既にzshがインストールされている場合は下記のようにzshのバージョンが表示されます。

[root@centos ~]# zsh --version
zsh 4.2.6 (i686-redhat-linux-gnu)

まだzshがインストールされていない場合は下記のように表示されます。

[root@centos ~]# zsh --version
-bash: zsh: command not found

yumでzshをインストールします。

[root@centos ~]# yum -y install zsh

zshの起動とログイン・シェルの設定

zshのインストールが完了したら、zshをログイン・シェルに設定します。
ログイン・シェルとは、Linuxへのログイン時に起動する標準のシェルのことです。
現在どのシェルがログイン・シェルとして利用されているかは下記のようにして確認できます。

[root@centos ~]# echo $SHELL

また、/etc/shellsには利用可能なシェルの一覧が記載されています。

[root@centos ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/zsh

下記の手順でzshをログイン・シェルに設定します。

[root@centos ~]# chsh
root のシェルを変更します。
新しいシェル [/bin/bash]: /bin/zsh	※zshのフル・パスを入力
シェルを変更しました。
[root@centos ~]# echo $SHELL	※シェルの変更を確認
/bin/zsh

zshの基本的な設定

zshの設定ファイルは~/.zshrcです。
zshを利用する前に設定ファイルを作成して下記の内容を記載します。

[root@centos ~]# cd ~	※ホームディレクトリへ移動
[root@centos ~]# vi .zshrc	※zshの設定ファイルを開く
※以下を追加
autoload -U compinit
compinit
setopt auto_cd
setopt auto_pushd
setopt correct
[root@centos ~]# source ~/.zshrc	※設定ファイルの内容を反映する

デフォルト補完機能の有効化

autoload -U compinit
compinit

上記の2行でデフォルト補完機能が有効となます。
例えば、bashやtcshでもおなじみのファイル名やディレクトリ名の補完に加え、コマンドのオプション一覧表示や、引数の候補を自動的にリストアップして補完という機能も利用できるようになります。

[root@centos ~]# ls -	※ls -まで入力した時点でTabキーを押すとlsコマンドのオプション一覧が表示される
--all                 -a  -- list entries starting with .
--almost-all          -A  -- list all except . and ..
--author                  -- print the author of each file
--block-size              -- specify block size
--classify            -F  -- append file type indicators
--dereference         -L  -- list referenced file for sym link
--directory           -d  -- list directory entries instead of contents
--dired               -D  -- generate output designed for Emacs' dired mode
--escape              -b  -- print octal escapes for control characters
--file-type           -p  -- append file type indicators except *
--full-time               -- list both full date and full time
- 以下省略 -
[root@centos ~]# ping 	※ping まで入力した時点でTabキーを押すと/etc/hostsに登録されているホスト名や過去に接続したホスト名などが引数としてリストアップされる
localhost                localhost.localdomain    centos.example.com               www.example.com                linuxserver.jp

ディレクトリ名でcd

setopt auto_cd

上記のように記述すると、ディレクトリ名を入力するだけでディレクトリ間の移動ができるようになります。
通常、ディレクトリ間を移動する際はcdコマンドを使用していました。

[root@centos ~]# cd /home/user	※/home/userへ移動
[root@centos ~]# pwd
/home/user

上記の設定により、下記のようにcdコマンドを省略した形でディレクトリに移動できます。

[root@centos ~]# /home/user
[root@centos ~]# pwd
/home/user

ディレクトリの移動履歴の利用

setopt auto_pushd

上記のように記述すると、ディレクトリの移動履歴を利用して、前にいたディレクトリに簡単に戻ることができます。
例えば、cd –でひとつ前にいたディレクトリに戻ることが可能になります。

[root@centos ~]# pwd
/home/user	※現在のディレクトリは/home/user
[root@centos ~]# cd /etc	※/etcに移動
[root@centos ~]# cd -
[root@centos ~]# pwd
/home/user	※ひとつ前にいた/home/userディレクトリに戻った

また、cd –と入力した時点でタブキーを押すと、これまでに移動したディレクトリの一覧が連番を当てられて表示され、行頭に表示されている番号を入力してEnterキーを押すと、そのディレクトリに移動することができます。

[root@centos ~]# cd -	※cd -まで入力したらEnterキーを押さずにタブキーを押す
※移動したディレクトリの一覧が表示される
1 -- /etc
2 -- /home/user
3 -- /var/log
4 -- /var
5 -- /etc/httpd
6 -- /home/user
[root@centos ~]# cd -2	※cd -2を入力してEnter
/home/user	※履歴で行頭に2が割り当てられていた/home/userディレクトリに移動する

コマンドのスペルチェックを有効化

setopt correct

上記のように記述すると、コマンドのスペルミスがあった場合、正しいコマンドのスペルを指摘してくれます。

[root@centos ~]# la	※正しくは"ls"だが間違えて"la"と入力してしまった
zsh: correct 'la' to 'ls' [nyae]? y	※スペルミスが指摘される。ここでyを入力するとlsが、nをクリックすると入力したlaが実行される

 - Linux ,