【入門】最後のシェル「zsh」とは?最初しておきたい設定方法

この記事は 2 分で読めます。
概要

「シェル」の中でも最後を意味するZshのカスタマイズコードを紹介します。

本記事の読者層

・Zshのカスタマイズコードを知りたい方

・BashとZshの違いを知りたい方

「シェル」の概要

「シェル」とはUnixで様々なコマンドをマシン語へ変換し、人間とコンピューターとの橋渡しをするコマンドラインインタープリンターです。このシェルには「sh」(シェル)、「bash」(バッシュ),「csh」(シー・シェル),「tcsh」(ティー・シェル)、「ksh」(ケー・シェル)、「zsh」(ズィー・シェル)など様々なものがあります。

Bsh (Bourne-Againシェル)は、最も一般的なLinuxディストリビューションにデフォルトでインストールされているシェルです。一方、Zシェル、Zshは、対話型ログインシェルとして利用でき、Bashの上に構築されているため、様々な追加機能が利用できます。BashもZshも、Boure Shell(sh)の拡張バージョンです。


Zshとは?

Zshは、上記で示したようにUnix系OSで利用可能なシェルの1つで、ユーザーにとって強力なツールになるように設計されています。機能が最も豊富なシェルです。sh, ash, bash,csh, ksh, tcshの情意互換相当の機能を持っています。最近ではmacOS Catalinaからユーザーが使用するシェルのデフォルトとしてzshが採用されています。

Linux版でもインストール直後の基本シェルはBashですが、Zshをインストールすることで同様に便利な機能を利用できます。

zshのメリットは

・プログラム可能な保管機能を持ち、ユーザーコマンドのオプションや因数の打ち込み支援。

・プロンプトテーマのカスタマイズが可能。

・そのた多彩な機能。

ログインシェル

Linuxにログインすると自動的にいずれかのシェルが起動します。そのシェルを「ログインシェル」といいます。

BashとZshの違い

以下に「Bash」と「Zsh」の主な違いについてを示します。

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

Zshのインストール方法

Ubuntu Linuxなどでは以下のようにaptコマンドでzshをインストールできます。

% sudo apt install zsh

現在のシェルを確認する方法

% echo $0
-zsh

「-zsh」と表示されていれば、SHELLは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のパスの確認

% which zsh
/usr/bin/zsh

zshのバージョン確認

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

ZSH用コード

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

ZSH用のテストコード

# 日本語を# 日本語を使用
export LANG=ja_JP.UTF-8
# パスを追加したい場合
export PATH="$HOME/bin:$PATH"
export PATH="/usr/local/bin:$PATH"


# 色を使用
autoload -Uz colors
colors
# 補完
autoload -Uz compinit
compinit
# emacsキーバインド
bindkey -e
# 他のターミナルとヒストリーを共有
setopt share_history
# ヒストリーに重複を表示しない
setopt histignorealldups
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
# cdコマンドを省略して、ディレクトリ名のみの入力で移動
setopt auto_cd
# 自動でpushdを実行
setopt auto_pushd
# pushdから重複を削除
setopt pushd_ignore_dups
# コマンドミスを修正
setopt correct
#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"
# syntax
zplug "chrissicool/zsh-256color"
zplug "Tarrasch/zsh-colors"
zplug "zsh-users/zsh-syntax-highlighting"
zplug "ascii-soup/zsh-url-highlighter"
 
# program
zplug "voronkovich/mysql.plugin.zsh"
 
# tools
zplug "marzocchi/zsh-notify"
zplug "oknowton/zsh-dwim"
setopt auto_cd
# 自動でpushdを実行
setopt auto_pushd
# pushdから重複を削除
setopt pushd_ignore_dups
# コマンドミスを修正
setopt correct
#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"
# syntax
zplug "chrissicool/zsh-256color"
zplug "Tarrasch/zsh-colors"
zplug "zsh-users/zsh-syntax-highlighting"
zplug "ascii-soup/zsh-url-highlighter"
# program
zplug "voronkovich/mysql.plugin.zsh"
# tools
zplug "marzocchi/zsh-notify"
zplug "oknowton/zsh-dwim"
 # グローバルエイリアス
alias -g L='| less'
alias -g H='| head'
alias -g G='| grep'
alias -g GI='| grep -ri'
alias homessh='ssh tomita@wisenetwork.net'
alias issh='ssh tomita@192.168.49.243'
# イリアス
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'
# 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'
 
# backspace,deleteキーを使えるように
stty erase ^H
bindkey "^[[3~" delete-char
# cdの後にlsを実行
#chpwd() { ls -ltr --color=auto }
#chpwd() { ls -ltr -G}
# どこからでも参照できるディレクトリパス
cdpath=(~)
# 区切り文字の設定
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
# プロンプトを2行で表示、時刻を表示
PROMPT="%(?.%{${fg[green]}%}.%{${fg[red]}%})%n${reset_color}@${fg[blue]}%m${reset_color}(%*%) %~
%# "

まとめ

本記事のまとめ

ZSH用コードでSHELLの使い勝手が大幅に上がります。

関連リンク

【サーバー】ネットワークセキュリティー上ルーターが必須な理由を解説

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です