zshは僕の友達−zshの導入−

リナザウ使い必携の書「Hacking Linux Zaurus」を購入し、遊びがてらぼちぼちPrograming(の勉強)を始めている。その為にシェルをbashからzshに入れ替えてみた。
bashでは起動したプロセスがサスペンドすると勝手に止まってしまう為。zshbashの上位互換シェルであり、より高機能である。

■シェルとは

カーネル/シェル/ターミナルはUNIX系OSの基本構成であり、その役割は以下の通り。

カーネル :ハードウエアを制御し基本的な処理を行う
◆シェル  :カーネル(OS)−ターミナル(人間)間を中継する
◆ターミナル:命令を与えたり、カーネルからの情報を表示する




zshの導入

たたかうデジタリアンさんのipk置き場よりzsh_3.0.8-6_arm.ipkをDLし、本体メモリにインストール。
zshを使うにはTerminalを起動し以下コマンドを入力する。

bash-2.05$ exec zsh

無事シェルがbashからzshに切り替わると、プロンプトが以下に変わる。

zaurus%




■起動時シェルの変更

毎回bashからzshに切り替えるのは面倒なので、Terminal起動時自動的にzshが立ち上がるように設定する。


*これから行う設定は失敗するとQtopiaが起動しなくなります。特に必要のない方はやらないこと、やられる方は自己責任でお願いします(かくいう僕も1度失敗した。。。)。
1.Backupをとる
ZaurusのBackupをとる(設定に失敗すると最悪完全初期化となる為)。


2.zshのインストールパスを確認
Terminalから以下コマンドを入力し、zshのパスを確認

bash-2.05$ which zsh

通常は以下のように表示される(はず)。

/home/QtPalmtop/bin/zsh



3.qpe.shのbackupをとる
Terminalを起動時のシェル選択設定は/home/QtPalmtop/qpe.shに記述されている。
まずはこのファイルのBackupをとる。

bash2.05$ su
password (暗証番号)
# cd /home/QtPalmtop
# cp -p qpe.sh qpe.sh.back
# chmod 766 qpe.sh
# exit
bash2.05$

4.qpe.shの編集
qpe.shを、以下の通り編集。

export SHELL=/bin/bash
↓(以下のように編集)
# export SHELL=/bin/bash
export SHELL=/home/QtPalmtop/bin/zsh 

編集後Zaurusを再起動すれば、ターミナル起動時にzshが起動するようになる。



zshの設定

zshは高機能なシェルだが、起動時は無効になっている機能もある。そこで設定ファイルを作成し起動時にこれら機能が有効になるよう設定する。
zshの設定ファイルは/home/zaurus/.zshrcになる。Editerで以下記述し.zshrcを作成。

export TERM=xterm-new
 
# set shell options
setopt auto_menu auto_cd correct auto_name_dirs auto_remove_slash
setopt extended_history hist_ignore_dups hist_ignore_space prompt_subst
setopt pushd_ignore_dups rm_star_silent sun_keyboard_hack
setopt extended_glob list_types no_beep always_last_prompt
setopt cdable_vars sh_word_split auto_param_keys
 
PROMPT='%{^[[$[32+RANDOM % 5]m%}%U%B$HOST'"{`whoami`}%d%%%{^[[m%}%u "
RPROMPT='%{^[[33m%}[%~]%{^[[m%}'

これでスペルミスがあった場合のコマンド補完機能などが起動時から有効になる。


*上記設定を行なうとzsh起動時の画面が以下のようになる。

zaurus{zaurus}/home/zaurus%

元のプロンプトに戻したい場合は設定ファイルの最後の2行を削除する。


*上記設定ファイルについてはmustanさん_behind the sunのものを使わせて頂きました。謝謝。