【小ネタ】MacbookProのログインシェルをbashからzshに乗り換えました。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

以前からzshは使いやすいと聞いていましたが、bashに慣れていた私には関係ないと目を逸らし続けてました。
軽い気持ちで触った結果、補完機能が強力さに惚れ込みましてこれまで付き合ってきたbashとお別れしました。

zsh導入で何をしたか?

今回zshに求めたものはbashで使える機能+αでした。
そこで、手軽に使うためにもzshrcをさっくり作ってみました。

  1. zshrc作成、変更
  2. ログインシェルを変更

実際にやった作業

zshrc作成、変更

  • bashrcと同様にzshrcを作成します。
% touch .zshrc
  • zshrcに調べた設定項目を入れる
# 環境変数
export LANG=ja_JP.UTF-8

# 補完機能有効化
autoload -Uz compinit
compinit

# 色使用有効化
autoload -Uz colors
colors

# cd後、自動的にpushdする
setopt auto_pushd

# 重複したディレクトリを追加しない
setopt pushd_ignore_dups

HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000

# 日本語ファイル名を表示可能にする
setopt print_eight_bit

# beepを無効
setopt no_beep

# Ctrl+Dでzshを終了しない
setopt ignore_eof

# '#'以降をコメントとして扱う
setopt interactive_comments

# プロンプト
PROMPT="%{${fg[green]}%}[%n@%m]%{${reset_color}%} %~
%# "

# エイリアス
alias la='ls -a'
alias ll='ls -l'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

alias grep='grep --color=auto'

#同時に起動したzshの間でヒストリを共有する
setopt share_history

# 同じコマンドをヒストリに残さない
setopt hist_ignore_all_dups

# スペースから始まるコマンド行はヒストリに残さない
setopt hist_ignore_space

# ヒストリに保存するときに余分なスペースを削除する
setopt hist_reduce_blanks

# awscli補完機能有効化
source '/usr/local/bin/aws_zsh_completer.sh'

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash
# ファイル名の展開でディレクトリにマッチした場合 末尾に / を付加
setopt mark_dirs
# 補完候補一覧でファイルの種別を識別マーク表示 (訳注:ls -F の記号)
setopt list_types
# 補完キー連打で順に補完候補を自動で補完
setopt auto_menu
# カッコの対応などを自動的に補完
setopt auto_param_keys
# 語の途中でもカーソル位置で補完
setopt complete_in_word

zstyle ':completion:*' use-cache true
zstyle ':completion:*:default' menu select=2
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
  • 設定の確認
% source ~/.zshrc

ログインシェル変更

Macでのログインシェル変更方法は以下のコマンドで出来ます。

% chsh -s /bin/zsh
Changing shell for yoshie.kento.
Password for yoshie.kento:

最後に

30分で非常に使いやすい環境が出来ました。
awscliの補完機能の指定が少し変わるかなと懸念しましたが、すんなり設定もわかったので時間がかかりませんでした。
bashの時よりも補完ワードが強調されるので見やすくなったかなと思います。
まだzshを使われていない方がいらっしゃったら、ぜひ触ってみて頂くことをおすすめします。
ありがとうございました、bashさん。よろしくお願いします、zsh先生。