zshの設定及びインストールガイド
1.
インストール
zshをインストールする
zshをGentooにインストールするには、
app-shells/zsh(zsh本体)とapp-shells/zsh-completion(zshが用いる補完スクリプト)のパッケージをemergeする必要があります。
コード表示 1.1: zshのemerge |
# emerge zsh zsh-completion
|
zshを使い始める
zshを始めて起動する際、以下のようなメッセージが表示されます。
このガイドの後ろの部分を読むときに起動ファイルを作成することになるので、このメニューはスキップしても構いません。
コード表示 1.2: 初期設定のスキップ |
$ zsh
This is the Z Shell configuration function for new users, zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~). This function can help you with a few settings that should
make your use of the shell easier.
You can:
(q) Quit and do nothing. The function will be run again next time.
(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.
(1) Continue to the main menu.
--- Type one of the keys in parentheses --- q
|
2.
設定
初めに
zshコマンドを実行して、zshの単一のセッションを起動してみましょう。
なお、もっと永続的な設定を行う方法については、設定の保存の章を参照してください。
インストールした直後は、zshは非常にシンプルで多機能とは言えないように感じられます。
この挙動を変えるためには、いくつかの設定を変更する必要があります。
高度なタブ補完
有名なzshのタブ補完システムを使えるようにするためには、以下のコマンドを実行する必要があります。
コード表示 2.1: 補完の有効化 |
% autoload -U compinit
% compinit
|
標準の補完スタイルはとても単純で見た目が悪いです。この見た目を改善したい場合、以下のコマンドを入力してください。
コード表示 2.2: 補完スタイルの改善 |
% zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
% zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'
|
コマンド訂正
入力されたコマンドを自動で訂正する機能を有効にするのも得策です。
コード表示 2.3: 訂正の有効化 |
% setopt correctall
|
Prompts
何にせよ、プロンプトが味気ないのだと感じるかもしれませんが、これは数段階の作業で簡単に修正することができます。
初めに、高度なプロンプトを扱うための機能を初期化する必要があります。
コード表示 2.4: 高度なプロンプトの有効化 |
% autoload -U promptinit
% promptinit
|
prompt -pコマンドを実行することで、使用可能なプロンプトのサンプルを表示することができます。
ここで、気に入ったものを現在のプロンプトに設定することができます。
コード表示 2.5: サンプルのプロンプトからの選択 |
% prompt gentoo
|
注意:
色々なプロンプトを試していて、全部のプロンプトのサンプルを一々見たくない場合は、
prompt -lコマンドを使って使用可能なプロンプトのリストを表示することができます。
|
他の選択肢として、自分で独自のプロンプトを作成するという手があります。そのためにはPS1環境変数を設定する必要があります。
コード表示 2.6: 単純な独自のプロンプト |
% export PS1="[Test Prompt] > "
[Test Prompt] >
|
独自のテキストプロンプトを作成できることはそれ自体優れた機能ですが、
そのうえシステム情報をプロンプト中に表示させるための多くのエスケープシーケンスをzshは備えています。使用可能なエスケープシーケンスの一部を示します。
| シーケンス |
出力 |
| %T |
システムの時刻(HH:MM) |
| %* |
システムの時刻(HH:MM:SS) |
| %D |
システムの日付(YY-MM-DD) |
| %n |
あなたのユーザー名 |
| %B - %b |
太字の開始 - 終了 |
| %U - %u |
下線の開始 - 終了 |
| %d |
カレントディレクトリ |
| %~ |
カレントディレクトリ(~からの相対パス) |
| %M |
コンピュータのホスト名 |
| %m |
The computer's hostname (truncated before the first period) |
コンピュータのホスト名(の始めのピリオドより前の部分) |
| %l |
現在のあなたのtty |
これらのエスケープシーケンスは、単にPS1環境変数の一部として使用すれば、zshによって自動的に解釈されます。
コード表示 2.7: より複雑なプロンプト |
% export PS1="[%* - %D] %d %% "
[08:44:23 - 06-02-18] /home/username %
|
履歴
残念ながら、Gentooの標準でのzshの設定ではコマンド履歴機能を使うことができません。
履歴が有効になっていないシェルを使って作業することは非常にイライラするものであるため、私たちは以下のコマンドを実行するべきです。
コード表示 2.8: 履歴の基本的な設定 |
% export HISTSIZE=2000
% export HISTFILE="$HOME/.history"
% export SAVEHIST=$HISTSIZE
|
hist_ignore_all_dupsオプションを設定することで、
入力内容が重複する際には(単一のセッション内にls -lが何度も実行される場合など)履歴を記録しないようにすることができます。
コード表示 2.9: 重複を無視する設定 |
% setopt hist_ignore_all_dups
|
特定の項目を履歴に記録しないようにするための、一つ以上のスペースに続けてコマンドを入力するという便利な工夫のやり方を説明します。
コード表示 2.10: 特定の項目を記録しないようにする設定 |
% setopt hist_ignore_space
% cat /proc/cpuinfo
|
雑多な設定
カレントディレクトリの移動のための飽き飽きするようなcdコマンドの入力をしたくないなら、
autocdオプションを指定するのが良いでしょう(例: /etcと、cd /etcの代わりに入力できます)。
コード表示 2.11: autocdオプションの設定 |
% setopt autocd
|
bashと同じような標準的なグロブに不満がある場合、extendedglobオプションを指定することで拡張されたグロブ(正規表現に近いもの)を利用できます。
コード表示 2.12: 拡張されたグロブの設定 |
% setopt extendedglob
|
上記のオプションが設定されているなら、cp ^*.(tar|bz2|gz)といった拡張されたグロブによるクエリを使うことができます。
3.
設定を保存する
zshの設定を保存する
一旦zshを気に入るようにカスタマイズしてしまったなら、これらの設定をzshのシステムの標準の設定として保存するのが得策です。
そのために、/etc/zsh/zshrcスクリプトに設定を書くという方法が考えられます。
代わりに、~/.zshrcを編集することで自分のアカウントのみに対する標準の設定とすることだってできます。
コード表示 3.1: zshrcの例 |
#!/bin/zsh
# comp
autoload -U compinit
compinit
# correction
setopt correctall
# prompt
autoload -U promptinit
promptinit
prompt gentoo
|
4.
zshを標準のシェルにする
root権限を利用できる場合のユーザーの設定
usermodコマンドを使って特定のユーザーのシェルを変更することができます。
コード表示 4.1: usermodを使ったzshへの移行の永続的な設定 |
# usermod -s /bin/zsh userlogin
|
rootでないユーザーのための別の方法
もしシステム管理者が(それが何ら無理な要求ではないにも関わらず)あなたのシェルをzshに設定することを認めないならば、
bashの起動時にzshを実行するように設定するという手があります。~/.bashrcにちょっとした変更をしさえすれば十分です。
コード表示 4.2: ~/.bashrcの例 |
exec zsh
|
シェルを変更する他の方法として、chshコマンド(ユーザーのログインシェルを変更するためのユーティリティ)を使うというものがあります。
一般ユーザーは自分のアカウントのシェルを変更することしかできません。rootならば、全てのユーザーのログインシェルを変更することができます。
コード表示 4.3: chshを使ったzshへの移行の永続的な設定 |
$ chsh -s /bin/zsh username
|
このドキュメントの内容は、他のものが明示されない限りは、
CC-BY-SA-2.5ライセンスです。
Gentoo Name and Logo Usage Guidelines (日本語訳)が適用されます。
|