Zsh(Z shell)は POSIX を採用しているシステムの多くが標準搭載している Bash(Bourne-again shell)と比べ、非常に拡張性の高いコマンドシェルです。2019年に macOS に採用されたことで急激にシェアを拡大しました。
Zsh には優れたオートコンプリート機能だけでなく、Oh My Zsh や Pretzo といったプラグインや見た目を変えるテーマの管理が簡単に行えるマネージャがあり、巨大なコミュニティを形成しています。何百種類ものプラグインやテーマが存在するため、自分のタスクや好みに合ったインターフェイスに手軽に変更することが可能です。
両者とも Bourne shell から派生したシェルで使い勝手が似通っているため操作性に違いはあまりなく、切り替えはスムーズにできます。
1. Zsh をインストール
まずシステムに zsh
がインストールされているか確認する。
$ which zsh
すでにインストールされていれば /usr/bin/zsh
といった感じのメッセージが表示される。何も表示されなければインストールされていない。インストールされていなければ以下のコマンドを実行する。
Redhat系
$ yum install zsh
Debian系
$ sudo apt-get install zsh
Arch系
$ sudo pacman -S zsh
macOS系
※予め Homebrew をインストールしておく必要がある。
※Catalina以降のmacOS XはZshを標準採用しているのでインストールしなくても良い。
brew install zsh
オートコンプリート機能を強化するためには zsh-completions
パッケージをインストールします。
2. コマンドシェルを変更する
Zshがインストールされたパスを調べる
$ which zsh
/usr/bin/zsh
以下のコマンドでシェルを変更する。
$ chsh
管理者パスワードと先程調べたZshのパスを入力する。
nemo のシェルを変更します。
パスワード:
新しいシェル [/bin/bash]: /usr/bin/zsh
シェルを変更しました。
X11を再起動したらZshがシステムの標準シェルとなっているはずだ。
3. 初期設定ウィザード
zshを初めて立ち上げると zsh-newuser-install
というスクリプトが走り、初期設定ウィザードが起動する。このウィザードで自動補完機能やコマンド履歴を簡単に設定することができる。
$ 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 で何もせずに終了。
- 0 で空の .zshrc ファイルを生成する。
- 1 で設定メニューを表示する。
Please pick one of the following options:
(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)
(2) Configure the new completion system. (Recommended.)
(3) Configure how keys behave when editing command lines. (Recommended.)
(4) Pick some of the more common shell options. These are simple "on"
or "off" switches controlling the shell's features.
(0) Exit, creating a blank ~/.zshrc file.
(a) Abort all settings and start from scratch. Note this will overwrite
any settings from zsh-newuser-install already in the startup file.
It will not alter any of your other settings, however.
(q) Quit and do nothing else. The function will be run again next time.
--- Type one of the keys in parentheses ---
- 1 でコマンド履歴の設定。
- 2 でオートコンプリートの設定。
- 3 でショートカットキーについての設定。
- 4 その他の設定。
- 0 で空の設定ファイルを出力。
- a で設定をリセットしてスクリプトを再実行。
- q 何もせずに終了。
コマンド履歴の設定
History configuration
=====================
# (1) Number of lines of history kept within the shell.
HISTSIZE=1000 (not yet saved)
# (2) File where history is saved.
HISTFILE=~/.histfile (not yet saved)
# (3) Number of lines of history to save to $HISTFILE.
SAVEHIST=1000 (not yet saved)
# (0) Remember edits and return to main menu (does not save file yet)
# (q) Abandon edits and return to main menu
--- Type one of the keys in parentheses ---
- 1 入力したコマンドの履歴をどれくらいシェルに保管するか設定する。
HISTSIZE=任意の数値
- 2 ログを保存する場所を設定する。
HISTFILE=任意のファイル名
- 3
HISTFILE
にいくつコマンドを保管するか設定する。 - 0 設定を保存してメニューに戻る。
- q 設定を破棄してメニューに戻る。
オートコンプリートの設定
The new completion system (compsys) allows you to complete commands, arguments and special shell syntax such as variables. It provides completions for a wide range of commonly used commands in most cases simply by typing the TAB key. Documentation is in the zshcompsys manual page.
If it is not turned on, only a few simple completions such as filenames are available but the time to start the shell is slightly shorter.
You can:
(1) Turn on completion with the default options.
(2) Run the configuration tool (compinstall). You can also run
this from the command line with the following commands:
autoload -Uz compinstall
compinstall
if you don't want to configure completion now.
(0) Don't turn on completion.
--- Type one of the keys in parentheses ---
- 1 オートコンプリートを有効化する。
- 2 compinstall を実行する。
- 0 オートコンプリートを無効にする。
キーバインドの設定
コマンド入力中にエディタを立ち上げたときのキーバインドを設定する。Emacs風にするかVi風にするか決められる。デフォルト設定ではEmacs風になる。
Default editing configuration
=============================
The keys in the shell's line editor can be made to behave either like Emacs or like Vi, two common Unix editors. If you have no experience of either, Emacs is recommended. If you don't pick one, the shell will try to guess based on the EDITOR environment variable.
Usually it's better to pick one explicitly.
# (1) Change default editing configuration
bindkey -e (not yet saved)
# (0) Remember edits and return to main menu (does not save file yet)
# (q) Abandon edits and return to main menu
--- Type one of the keys in parentheses ---
- 1 キーバインドの変更。
- 0 設定を保存してメニューに戻る。
- q 設定を破棄してメニューに戻る。
シェルオプションの設定
zshにはシェルオプションというユーザの入力に対する振る舞いを決める設定が多く存在する。これらのよく使う設定をこのウィザードでは簡単に行える。
Common shell options
====================
The following are some of the shell options that are most often used.
The descriptions are very brief; if you would like more information,
read the zshoptions manual page (type "man zshoptions").
# (1) Change directory given just path.
# unsetopt autocd (no value set)
# (2) Use additional pattern matching features.
# unsetopt extendedglob (no value set)
# (3) Unmatched patterns cause an error.
# setopt nomatch (no value set)
# (4) Beep on errors.
# setopt beep (no value set)
# (5) Immediately report changes in background job status.
# unsetopt notify (no value set)
# (0) or (q) Return to main menu (no changes made yet)
--- Type one of the keys in parentheses ---
- 1
auto cd
という名の通りパスのみを入力した場合そのディレクトリに移動する。 - 2 拡張
glob
を使用する。 - 3 パターンにマッチしない場合エラーを出力する
- 4 エラーが発生したときにビープ音を出す。
- 5 バッググランドジョブで変化があった場合すぐに通知する。
- 0 設定を保存してメニューに戻る。
- q 設定を破棄してメニューに戻る。
よくわからない場合はとりあえず Recommended の項目をウィザードで設定すれば問題は起きないはず。最後にメインメニューで設定を保存することを忘れずに。
設定をあとから変更したいときはホームディレクトリ内の .zshrc
を編集すれば良い。
Zshをインストールし一段落ついたらターミナルの見た目を変えたい人もいるだろう。そんなときに「Powerlevel10k」というテーマを導入することで簡単に変身させることができる。よろしければ下のカードからどうぞ。
Photo by Mohammad Rahmani on Unsplash
コメント