最強シェルzshとは?インストールから初期設定まで徹底解説

zshのインストールと設定
この記事は 5 分で読めます。
概要

Linuxのコマンドライン環境で使われるOSに相当する言語、zsh (ゼットシェル)をご存じでしょうか?

本記事では、コマンドをマシン語に変換してくれるシェルのなかでも最強と謳われるzshのインストール方法から初期設定まで解説します。また、利用する上での「便利な機能」や「カスタマイズ方法」も紹介します。

管理人

本記事の読者層は以下の方を想定しています。

本記事の読者層
  • Zshについて知らない、もしくはBashとZshの違いがわからない方
  • Zshの初心者だけど、インストール方法がわからない方
  • Zshを使っているけど、さらに使いやすくしたい方
目次

シェルとは?

 「シェル」とは、Unixでさまざまなコマンドをマシン語に変換し、人間とコンピューターとの命令の橋渡しをするコマンドラインインタープリンターのことです。

このシェルに以下のような種類があります。

ポイント

代表的なシェルの種類

  • 「sh」(シェル)
  • 「bash」(バッシュ)
  • 「csh」(シー・シェル)
  • 「tcsh」(ティー・シェル)
  • 「ksh」(ケー・シェル)
  • 「zsh」(ズィー・シェル

なかでも「Bash」(Bourne-Againシェル)は、Unixや一般的なLinuxディストリビューションのなかでもデフォルトでインストールされているシェルです。

一方、「Zsh」対話型ログインシェルとして「Bash」上に構築され、様々な追加機能が利用できます。どちらもシェルもBourne Shell(sh)の拡張バージョンです。

シェルには、sh、ash、bash、csh、ksh、tcshといった種類もあり「zsh」との互換性があります。

シェルBash内容
shboure ShellUnixで使われていた初期のxシェルの一つ
ashAlmquist Shell小型で高速Bourne Shellの代替
dashdebian Almquist shellAlmquist Shell (ash) のDebian
bashBourne-Again shell「bash」と呼ばれているやつの正式名称
kshKornShellAT&T Bell LaboratoriesのDavid Kornにより開発
zshZ shell対話型ログインシェル
yashYet another shellPOSIX準拠のUnixシェル
cshC ShellBorneシェルよりも高機能
tcshTENEX C shelltcsh.cshのパワーアップ版
eshellEmacs shellEmacs上で使えるShell
「Bash」と「Zsh」の主な違い

下記ではよく知られているシェルをリスト化してあります。

Zshとは?

zshのインストール

Zsh (Z-Shell)は、Unix系のOSで利用可能なシェルの1つであり、ユーザーにとって豊富な革新的機能を持つツールとして設計されています。

「Z シェル」は、ポール ファルスタッドがプリンスタウン大学の学生だったときに最初に作成されました。

今では、zshは非常に人気のあるシェルになりました。

ここでは人気の理由について解説していきます。

bash、 ksh、およびtcshの便利な機能の多くはzsh に組み込まれています。

Zshは対話型で使用するために設計されたシェルですが、なかでも最大のメリットは、その強力なスクリプト言語にあります。

また、bashと比べて多くのオリジナル機能が追加されています。同時に、強力な補完機能も特徴です。

zshの補完機能については、下記の記事をご参照ください。

このように、すべてのシェルの良いところを取り入れたzshは「最強のシェル」とも呼ばれています。

このzshのメリットを如何にまとめておきます。

メリット
  • プログラム可能な補完機能を持ち、ユーザーコマンドのオプションや因数の打ち込み支援
  • 強力なスクリプト言語
  • プロンプトテーマがカスタマイズ可能
  • その他多彩な便利な機能

UbuntuなどのLinux OSでは、インストール直後の基本シェルとしてBashが使われています。

このためデフォルトのログインシェルはBashですが、zshをインストールすることでさらに便利な機能を利用できます。

ヘビーユーザーになればなるほど自分に適したカスタマイズを求めてBashを卒業し、カスタマ性に優れたzshを選択するようになるそうです。

ログインシェルとは….
Linuxにログインすると自動的にいずれかのシェルが起動します。そのとき立ち上がったシェルを「ログインシェル」といいます。

各OSでのzshの対応環境 (Windows, macOS)

macOS環境でのzsh

ここまでは、Linux OSの環境下でお伝えしましたが、OSでのzshの対応状況はどうでしょう。

2019年以来 Apple製のmacOS Catalinaでもデフォルトのログインシェルとして、zshが採用されるようになりました。

このためzshのためインストールは必要ありません。

Windows OS環境でのzsh

一方でWindowsではNTFSファイルシステムが使われておりLinuxで標準的に使われているものとは権限管理の仕組みが異なっています。

このためWindows上でのPowerShellやDOSプロンプト画面での利用はできません。使用する場合には、Git Bash, cygwin, WSL2などのLinux専用の仮想環境が必要です。

zshのマニュアル

本記事ではzshの魅力を少しでも伝えていこうと思いますが、すべてを網羅できないため、詳細は以下のZshのページからマニュアルを確認してみてください。

zshのサイト

BashとZshの違い

zshはBashの上位互換です。このためBashでできることはzshでも可能です。

ZshにはBashにはない自動修正機能が組み込まれいます。また、人気のあるOh-my-zshなどの利用可能なプラグイン、テーマ、フレームワークが豊富にあります。

以下にBashとZshの主な違いを比較しまとめたものになります。

シェルBashZsh
読み込みファイル.bashrcを読み込み。.zshrcを読み込み。
主な機能構文強調表示と自動修正機能がない。構文強調表示と自動修正機能がある。
プラグインプラグインのサポートがない。プラグインやテーマが豊富
「Bash」と「Zsh」の主な違い

一方でBashも今後使われ続けると思います。

Zshのインストール方法

本記事ではUbuntu18.04LTS以降のLinuxディストリビューション環境でテストしております。

macの場合はzshがデフォルトで搭載されていますのでインストールの必要はありません。

Zshのインストール前確認

現在どのシェルが使われているかは以下のコマンドを入力すると確認できます。

> echo $0
-zsh

「-zsh」と表示されていれば、SHELLはzshですのでインストールは不要です。

Zshのインストール

Ubuntu Linux環境下では、パッケージマネージャーを利用してインストールできます。

aptコマンドによりzshをインストールできます。

> sudo apt-get install zsh

その後、zshコマンドを入力することでzshを立ち上げることができます。

すると以下のようにいくつかのオプションを選択するように求められられます。

>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.

(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).

--- Type one of the keys in parentheses ---

メッセージの訳

これは新規ユーザー向けの Z Shell 設定機能です。

  • 現時点で zsh の「起動ファイル」がないため、このメッセージが表示されます。
  • (q)何もせず終了します。このメッセージは次回また確認出来ます。
  • (0) コメントのみを含むファイル ~/.zshrc を作成して終了します。 これにより、この関数は再度実行されなくなります。
  • (1) メインメニューに進みます。
  • (2) ~/.zshrc に推奨される構成を入力します。 システム管理者によって実行され、終了します (編集する必要があります) 必要に応じて、ファイルを手動で作成します)。
The function will not be run in future, but you can run
it yourself as follows:
  autoload -Uz zsh-newuser-install
  zsh-newuser-install -f

The code added to ~/.zshrc is marked by the lines
# Lines configured by zsh-newuser-install
# End of lines configured by zsh-newuser-install
You should not edit anything between these lines if you intend to
run zsh-newuser-install again.  You may, however, edit any other part
of the file.
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) 終了し、空の ~/.zshrc ファイルを作成します。
  • (a) すべての設定を中止し、最初からやり直します。これは上書きされることに注意してください zsh-newuser-install の設定はすでに起動ファイルに含まれています。 ただし、他の設定は変更されません。
  • (q) 辞めて何もしません。この関数は次回も実行されます。

ここでは、何もしないで(0)を設定(zshの初期設定をせず)し、インストールは終了です。

zshのインストール後の確認

zshがインストール出来ているか確認してみます。以下にzshのインストール前後で利用出来るShellが増えていることが分かります。

zshインストール前

>cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen

zshインストール後

>cat /etc/shells
% cat /etc/shells
# /etc/shells: valid login shells 
/bin/sh 
/bin/dash 
/bin/bash  
/bin/rbash  
/bin/zsh 
/usr/bin/zsh  
/usr/bin/tmux  
/usr/bin/screen  

zshパスの確認

zshのパスを確認します。

% which zsh
/usr/bin/zsh

zshのバージョン確認

現在のUbuntu 20.04の場合、zshのバージョンはv5.8です。2022年さらに最新のv5.9が公開されています。

zsh --version
zsh 5.8 (x86_64-ubuntu-linux-gnu)

zshとbashの切り替え

一度zshをLinuxにインストールしてもbashに戻すことは以下のように簡単にできます。

zshからBshへ切り替えるためには

chsh -s /bin/bash

bshからzshへ切り替えるためには

chsh -s /bin/zsh

の入力でShellの交換は容易にできます。

Zshの機能

ZshとBashの違いをすぐには認識できないと思います。

Zshが特に優れている特徴は以下のような機能があります。

zshの機能
  • コマンドの検証
  • ディレクトリ履歴
  • スペル修正
  • auto cd オプション(cdコマンドを使用せずにディレクトリを変更)
  • 柔軟な検索機能 (lsコマンドによるファイル検索)
  • zshタブ補完機能の使用
  • ワイルドカードの利用
  • オプションの色付き補完
  • 再帰的パス展開
  • プラグインとテーマサポート

このような多彩な機能を使うためには.zshrcに設定を行う必要があります。

次章では設定ファイルの書き方について述べます。

設定ファイル「.zshrc」の作成

Zsh用おすすめ設定コード

zshの設定ファイルは、ホームディレクトリ下「~/.zshrc」にあり、そこに下記の記述しておきます。

設定ファイルを書き換えた後、反映させるために一度「zsh」をexitで一度抜けて、bashにも取ってから改めてzshコマンドでへ入りなおすことで設定ファイルを読み込んでくれるようになります。

次にzshにて特に重宝する設定ファイルを絞り込んで示します。

必要な機能があれば記載し有効にしてみてください。

最初のzshのコマンドはほとんど空の状態です。

お好みでカスタマイズしてみてください。

ZSH用のおすすめ初期設定コード

STEP1 日本語の設定をします。

# 日本語を# 日本語を使用
export LANG=ja_JP.UTF-8

STEP2 パスの設定をしておきます。

# パスを追加したい場合
export PATH="$HOME/bin:$PATH"
export PATH="/usr/local/bin:$PATH"

STEP3 プロンプトカラー変更のためcolor関数を読込ます。

# 色を使用
autoload -Uz colors
colors

STEP4 zshの補完機能を有効にします。

compinit というシェル関数を自動読み込みます。主にcompsysとcompctlの二つの補完システムがあるので、この補完機能を使えるように設定するコマンドです。

# 補完
autoload -Uz compinit
compinit

STEP5 Emacs用の設定します。

キーバインドをオプション-eで指定してemacsを利用出来るようにしておきます。

# emacsキーバインド
bindkey -e

STEP6 ターミナルとヒステリーを共有します。
 共有を解除するときは「setopt no_share_history」としておきます。

# 他のターミナルとヒストリーを共有
setopt share_history

STEP7 ヒストリーが重複表示しないように設定します。

ヒストリーサイズを10,000個設定しておき、.zsh_historyに保存します。

# ヒストリーに重複を表示しない
setopt histignorealldups
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000

STEP8 auto cdコマンドを設定します。(cd省略機能の設定)

cdを使わずディレクトリ間を移動できようにします。

# cdコマンドを省略して、ディレクトリ名のみの入力で移動
setopt auto_cd

STEP9 cd履歴をスタックできるように設定します。

cd-TABで確認できます。

# 自動でpushdを実行
setopt auto_pushd

STEP10 auto_pushdで重複履歴を削除するよう設定します。

# pushdから重複を削除
setopt pushd_ignore_dups

STEP11 コマンドミスを修正するように設定する。

# コマンドミスを修正
setopt correct

STEP12 zshのプラグインを導入します。

#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"

STEP13 zshのプラグインを導入します。

# syntax
zplug "chrissicool/zsh-256color"
zplug "Tarrasch/zsh-colors"
zplug "zsh-users/zsh-syntax-highlighting"
zplug "ascii-soup/zsh-url-highlighter"

STEP14 zshのプラグインを導入します。

# program
zplug "voronkovich/mysql.plugin.zsh"

STEP15 zshのプラグインを導入します。

# tools
zplug "marzocchi/zsh-notify"
zplug "oknowton/zsh-dwim"
setopt auto_cd

STEP16 zshのプラグインを導入します。

# コマンドミスを修正
setopt correct
#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"

STEP17 グローバルエイリアスを設定します。

これらのエイリアス表記で長い表記も簡単表記で実行可能になる。これは便利なので多くのエイリアスを登録しておくと作業短縮になってよい。

 # グローバルエイリアス
alias -g L='| less'
alias -g H='| head'
alias -g G='| grep'
alias -g GI='| grep -ri'
alias homessh='ssh user@wisenetwork.net'
alias issh='ssh user@192.168.49.243'

STEP18エイリアスを設定します。

# エイリアス
alias lst='ls -ltr --color=auto'
alias l='ls -ltr --color=auto'
alias la='ls -la --color=auto'
alias ll='ls -l --color=auto'
alias so='source'
alias v='vim'
alias vi='vim'
alias vz='vim ~/.zshrc'
alias c='cdr'

STEP19 ヒストリに日付を付ける設定にします。

# historyに日付を表示
alias h='fc -lt '%F %T' 1'
alias cp='cp -i'
alias rm='rm -i'
alias mkdir='mkdir -p'
alias ..='c ../'
alias back='pushd'
alias diff='diff -U1'

STEP20 バックスペースを使える設定にします。

# backspace,deleteキーを使えるように
stty erase ^H
bindkey "^[[3~" delete-char
# cdの後にlsを実行
#chpwd() { ls -ltr --color=auto }
#chpwd() { ls -ltr -G}
# どこからでも参照できるディレクトリパス
cdpath=(~)

STEP21 区切り文字の設定をします。

# 区切り文字の設定
autoload -Uz select-word-style
select-word-style default
zstyle ':zle:*' word-chars "_-./;@"
zstyle ':zle:*' word-style unspecified
# Ctrl+sのロック, Ctrl+qのロック解除を無効にする
setopt no_flow_control

STEP22 プロンプトの設定をします。

# プロンプトを2行で表示、時刻を表示
PROMPT="%(?.%{${fg[green]}%}.%{${fg[red]}%})%n${reset_color}@${fg[blue]}%m${reset_color}(%*%) %~
%# "

zshで利用できるキー操作一覧

zshの設定

zshのキー操作一覧

以下にZshのカーソル操作について記載しておきます。

$ sudo zsh
カーソル操作内容使用例
Ctrl-Aカーソルを行頭に移動
Ctrl-Bカーソルを1文字戻す
Ctrl-Eカーソルを行末に移動
Ctrl-Fカーソルを1文字進める
zshコマンドのオプション
文字削除内容使用例
Ctrl-Kカーソルから行末まで削除
Ctrl-Y直前に削除した文字列を貼り付け
Ctrl-W1単語削除
zshコマンドのオプション
コマンド履歴内容使用例
Ctrl-G履歴表示をキャンセル
Ctrl-N履歴を1つ進める
Ctrl-P1単語削除
Ctrl-R履歴を新しい順に検索
zshコマンドのオプション
その他内容使用例
ESC+Q現在入力中のコマンドをスタックに退避してプロンプトを空にする
zshコマンドのオプション

Oh-my-zsh の使用

Oh-my-zshのインストールするため、以下のコマンドを実行します。

sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Looking for an existing zsh config...
Found /home/user/.zshrc. Backing up to /home/user/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to /home/user/.zshrc.

Time to change your default shell to zsh:
Do you want to change your default shell to zsh? [Y/n] (←ここでパスワード入力)
Changing your shell to /usr/bin/zsh...
[sudo] password for user:
Shell successfully changed to '/usr/bin/zsh'.

         __                                     __
  ____  / /_     ____ ___  __  __   ____  _____/ /_
 / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \
/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / /
\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/
                        /____/                       ....is now installed!


Before you scream Oh My Zsh! look over the `.zshrc` file to select plugins, themes, and options.

• Follow us on Twitter: https://twitter.com/ohmyzsh
• Join our Discord community: https://discord.gg/ohmyzsh
• Get stickers, t-shirts, coffee mugs and more: https://shop.planetargon.com/collections/oh-my-zsh

実行後に、コマンドラインを確認すると次のようなカラー画面となります。

Oh-my-zshのインストールにともない設定ファイル「.zshrc」の中身も自動的に変更されます。

初期のzshのテーマは以下のテーマとなっています。

ZSH_THEME="robbyrussell"

プラグイン

Oh-my-zsh には、利用できるプラグインが大量に付属しています。プラグイン ディレクトリや Wiki を参照して、現在利用可能なものを確認してください。

https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins

Nextcloud

まとめ

本記事のまとめ

本記事では、zshのインストールの仕方oh-my-zshのインストールの仕方、.rczshの書き方を学びました。

これによりzshの使い勝手が大幅に改善すると思われます。

次回の記事をご期待下さい。どうぞよろしくお願いいたします。

関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次