1. ホーム
  2. コース一覧
  3. ターミナルカスタマイズコース
  4. zshを使いこなそう

ターミナルカスタマイズコース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の優れている点を少しご紹介します。

  1. ディレクトリ移動が簡単。

    • cdを使わなくても、ディレクトリ名だけで移動できる。
  2. パス補完が秀逸。

    • 例)"/u/lo/b" とタイプしてTabキーを押すと、/usr/local/bin に自動補完してくれる。
  3. プラグインやテーマのサポートが豊富

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ツール上や、サーバに接続した状態で、

    bashzshと打った場合に起動します。

  • シェルスクリプト

    シェルの操作をまとめたプログラムファイルを実行します。

設定ファイルの種類と役割

設定ファイルはglobal(/etc以下)とlocal(~以下)にそれぞれ存在します。 ※場合によってglobalに存在しないファイルもあります。

  • zlogin

    ログインシェルに必要な設定を記述します。

    後述するzprofileと役割がほぼ同じで、基本的にどちらか一方を使用し併用はしません。

  • zlogout

    exitでシェルから抜ける前に行いたい処理を記述します。

  • zprofile

    ログインシェルで1度だけ読み込ませたい設定を記述します。

    zloginとの違いは読み込まれるタイミングが、後述するzshrcより前という事です。

  • zshenv

    ログインシェル、インタラクティブシェル、シェルスクリプトの全てに必要な設定を記述します。例としては環境変数などがあります。

    ※影響範囲が大きいのでこのファイルへの記述は必要最低限にしましょう。

  • zshrc

    ログインシェル、インタラクティブシェルに必要な設定を記述します。

設定ファイルの読み込み順

先述した3種類のシェル毎に読み込まれるファイルが異なります。

  • 【ログインシェルの場合】

    zshenv > zprofile > zshrc > zlogin の順で読み込まれます。

    先述した通り設定ファイルはglobalとlocalにそれぞれ存在する前提で、globalに存在すればそれを読み込んだ後にlocalを読み込み(上書き)します。

    細かく書くとこんな感じの順番になります。

    1. /etc/zshenv
    2. ~/.zshenv
    3. /etc/zprofile
    4. ~/.zprofile
    5. /etc/zshrc
    6. ~/.zshrc
    7. /etc/zlogin
    8. ~/.zlogin
  • 【インタラクティブシェルの場合】

    zshenv > zshrc

    の順で読み込まれます。global、localを踏まえるとこんな感じになります。

    1. /etc/zshenv
    2. ~/.zshenv
    3. /etc/zshrc
    4. ~/.zshrc
  • 【シェルスクリプトの場合】

    zshenv

    読み込まれるのはzshenvのみです。こちらもglobal、localを順に読み込みます。

    1. /etc/zshenv
    2. ~/.zshenv
  • 【ログアウトの場合】

    zlogout

    ログアウト時に読み込まれるのはzlogoutのみです。 ただし、ログアウト時のみlocal > globalの順に読み込まれます。

    1. ~/.zlogout
    2. /etc/zlogout

globalとlocal

設定ファイルの説明の際に、度々globalとlocalというワードが飛び交いました。

globalとlocalについて詳しい解説は割愛しますが、ざっくり以下のような目的で使い分けをします。

globalとlocalの使い分け

区分詳細
globalシェルを操作できる全てのユーザに対して有効にしたい設定を記述
local特定のユーザに対して有効にしたい設定

.zshrcなどの設定変更を反映させるには

各設定ファイルを記述した後は、必ずsourceコマンドをして、ターミナルの再起動が必要です。

例)

  1. ~/.zshrcに環境変数を記述。
  2. source ~/.zshrcで設定を反映させる。
  3. ターミナルを再起動。

以上で、.zshrcの設定が反映され、有効になります。

zshの設定はどこで行えばいいのか?

ここまでzshの各設定ファイルについて説明しました。

では結局zshをカスタマイズしたい場合どのファイルに記述すればいいのか?ですが、

基本的には~/.zshenv~/.zshrcを適宜編集すればいいということになります。


まとめ

今回はzshについて、zshのインストール方法、zshをカスタマイズするためのoh-my-zshの導入方法、zshの設定方法について解説しました。

zshは機能の多い強力なシェルなので、設定や出来る事も幅広くなっていますね。ターミナルの世界が大きく変わる事、間違いなしです!

問題を解くためには、十分な画面サイズのPC環境をご利用下さい。