ターミナルカスタマイズコース2/8
zshを使いこなそう
zsh(ズィーシェル)について、bashとの違いやメリット、デメリットについて解説します。
zshとは
zshとは、shell(シェル)の1つで、OSとアプリケーションの間に立ち、ユーザからの要求をシステムに伝えるためのユーザインターフェースです。
シェルとは、コマンドを入力することで動くプログラムのことです。mac OSでは、Catalina以降では、zshがデフォルトシェルになりました。
sh、bash、csh、tcshの機能をほぼ網羅している非常に強力なshellです。
シェルには以下のようなものがあります。
- sh
- bash
- csh
- tcsh
- ksh などなど。
現在のシェルを確認する方法
ご自身のターミナルでどのシェルを使っているのか確認してみましょう。
#現在のシェルの確認
echo $SHELL
#使用可能なシェルの確認
cat /etc/shells
zshのinstall方法
zshをインストールする方法は、ディストリビューションやOSによって異なります。RHEL系ならyum
、Debian系ならapt
でzshをインストールできます。。
# RHEL系
sudo yum install -y zsh
# Debian系
sudo apt install -y zsh
macOSの方はHomebrewでzshをインストールできます。
brew install zsh
ディストリビューションについてはこちらの記事で解説しています。
https://envader.plus/article/7
ログインシェルをzshへ切り替える方法
デフォルトのシェルがbashやshの場合、zshへ切り替える作業が必要になります。はじめにzshのパスを確認します。
#パスの確認
which zsh
/usr/bin/zsh
次に、chshコマンドでシェルをzshへ切り替えます。
#chshコマンドでシェルの変更
chsh -s /usr/bin/zsh ユーザー名
# -s はログインシェルとして変更する
#which zshコマンドの結果を利用してシェルを変更する
sudo chsh -s $(which zsh) ユーザー名
zshの初期設定をする
chsh
コマンドを実行したら、いちどexit
コマンドを実行し、再度ターミナルに接続します。
再度ターミナルに接続すると、zshの初期設定画面が表示されます。
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.
(2) Populate your ~/.zshrc with the configuration recommended
by the system administrator and exit (you will need to edit
the file by hand, if so desired).
1を選択するとメインメニューへ移り、より詳細な設定ができるようになります。特に指定したいことがなければ、2を選択しましょう。
設定が完了すると、コマンドプロンプトの表示が変わります。再度シェルの確認をしてみましょう。
172-19-1-2% echo $SHELL
/usr/bin/zsh
zshへシェルが切り替わっていることが確認できたら、バージョンを確認しましょう。
zsh --version
zsh 5.4.2 (x86_64-apple-darwin16.7.0)
以上でzshのインストール、初期設定の完了です。
他のシェルと比較したzshの利点
bashなどの他のシェルと比較して、zshの優れている点を少しご紹介します。
-
ディレクトリ移動が簡単。
- cdを使わなくても、ディレクトリ名だけで移動できる。
-
パス補完が秀逸。
- 例)"/u/lo/b" とタイプしてTabキーを押すと、/usr/local/bin に自動補完してくれる。
-
プラグインやテーマのサポートが豊富
oh my zshとは
zshのフレームワークです。shellの動きが若干遅くなるのがデメリットですが、補完機能は便利です。
oh my zshをインストールするには以下のコマンドを実行します。
#oh-my-zshのインストール
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
oh my zshのテーマを確認する
oh my zshにはコマンドプロンプトをおしゃれにするテーマがあります。
テーマ一覧を確認するには、以下のコマンドで確認できます。
#こちらからテーマを確認
./.oh-my-zsh/tools/theme_chooser.sh -s
#テーマを指定してプレビューを表示する
./.oh-my-zsh/tools/theme_chooser.sh (テーマ名)af-magic
#色々な機能があるので自分好みにできます。
oh my zshのテーマを変更する
テーマを変更したい場合、.zshrc内のZSH_THEME="xxxxx”を編集する必要があります。
# .zshrc
ZSH_THEME="af-magic"
.zshrc
を編集して保存したら、source ~/.zshrc
を入力し、zshの設定を反映させれば編集したテーマが適用されます。
他にも有名なテーマとして「Prezto」など沢山の種類があり、自分の好みのテーマを見つけていくのも1つの楽しみです。
また、ターミナルでコマンドやディレクトリの検索ができるfzfを用いると作業効率をUPさせることができます。 https://envader.plus/course/7/scenario/1039
.zshrcなどの設定ファイルの種類について
PATHを通したい場合など、bash
であれば.bash_profile
などがありますが、
zsh
では、~/.zshrc
に記述していきます。
.zshrc
などの設定ファイルの使い方の一つに、aliasを設定する方法があります。aliasを設定すると、コマンド操作を楽にできるようになります。
https://envader.plus/course/7/scenario/1031
.zshrc
などの設定ファイルは、実は用途によって色々なものがあります。詳しく見ていきましょう。
3種類のシェル実行方法
シェルは以下3つの実行方法で使い分けられます。
実行方法によって読み込まれる設定ファイルが異なるので、それぞれについて簡単に見てみましょう。
-
ログインシェル
TerminalなどCLIツールの起動時や、sshなどでサーバにログインした際に表示されます。
⇒ 一般的に使用頻度は高いです。
-
インタラクティブシェル
TerminalなどのCLIツール上や、サーバに接続した状態で、
bash
やzsh
と打った場合に起動します。 -
シェルスクリプト
シェルの操作をまとめたプログラムファイルを実行します。
設定ファイルの種類と役割
設定ファイルはglobal(/etc
以下)とlocal(~
以下)にそれぞれ存在します。
※場合によってglobalに存在しないファイルもあります。
-
zlogin
ログインシェルに必要な設定を記述します。
後述するzprofileと役割がほぼ同じで、基本的にどちらか一方を使用し併用はしません。
-
zlogout
exit
でシェルから抜ける前に行いたい処理を記述します。 -
zprofile
ログインシェルで1度だけ読み込ませたい設定を記述します。
zlogin
との違いは読み込まれるタイミングが、後述するzshrc
より前という事です。 -
zshenv
ログインシェル、インタラクティブシェル、シェルスクリプトの全てに必要な設定を記述します。例としては環境変数などがあります。
※影響範囲が大きいのでこのファイルへの記述は必要最低限にしましょう。
-
zshrc
ログインシェル、インタラクティブシェルに必要な設定を記述します。
設定ファイルの読み込み順
先述した3種類のシェル毎に読み込まれるファイルが異なります。
-
【ログインシェルの場合】
zshenv
>zprofile
>zshrc
>zlogin
の順で読み込まれます。先述した通り設定ファイルはglobalとlocalにそれぞれ存在する前提で、globalに存在すればそれを読み込んだ後にlocalを読み込み(上書き)します。
細かく書くとこんな感じの順番になります。
/etc/zshenv
~/.zshenv
/etc/zprofile
~/.zprofile
/etc/zshrc
~/.zshrc
/etc/zlogin
~/.zlogin
-
【インタラクティブシェルの場合】
zshenv
>zshrc
の順で読み込まれます。global、localを踏まえるとこんな感じになります。
/etc/zshenv
~/.zshenv
/etc/zshrc
~/.zshrc
-
【シェルスクリプトの場合】
zshenv
読み込まれるのは
zshenv
のみです。こちらもglobal、localを順に読み込みます。/etc/zshenv
~/.zshenv
-
【ログアウトの場合】
zlogout
ログアウト時に読み込まれるのはzlogoutのみです。 ただし、ログアウト時のみlocal > globalの順に読み込まれます。
~/.zlogout
/etc/zlogout
globalとlocal
設定ファイルの説明の際に、度々globalとlocalというワードが飛び交いました。
globalとlocalについて詳しい解説は割愛しますが、ざっくり以下のような目的で使い分けをします。
globalとlocalの使い分け
区分 | 詳細 |
---|---|
global | シェルを操作できる全てのユーザに対して有効にしたい設定を記述 |
local | 特定のユーザに対して有効にしたい設定 |
.zshrcなどの設定変更を反映させるには
各設定ファイルを記述した後は、必ずsource
コマンドをして、ターミナルの再起動が必要です。
例)
~/.zshrc
に環境変数を記述。source ~/.zshrc
で設定を反映させる。- ターミナルを再起動。
以上で、.zshrcの設定が反映され、有効になります。
zshの設定はどこで行えばいいのか?
ここまでzshの各設定ファイルについて説明しました。
では結局zshをカスタマイズしたい場合どのファイルに記述すればいいのか?ですが、
基本的には~/.zshenv
と~/.zshrc
を適宜編集すればいいということになります。
まとめ
今回はzshについて、zshのインストール方法、zshをカスタマイズするためのoh-my-zshの導入方法、zshの設定方法について解説しました。
zshは機能の多い強力なシェルなので、設定や出来る事も幅広くなっていますね。ターミナルの世界が大きく変わる事、間違いなしです!
問題を解くためには、十分な画面サイズのPC環境をご利用下さい。