Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
121
Help us understand the problem. What is going on with this article?
@normalsalt

Mac のデフォルトシェルが bash から zsh に変更された機に乗じて乗り換える手順

macOS Catalina にアップデートすると、デフォルトシェルが bash から zsh に変更されていました。

ターミナルを起動すると、以下のようなメッセージが表示されます。

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

bash のまま使い続けることもできますが、これを機に zsh に乗り換えたいと思い、指示通り、次のコマンドを実行して、ターミナルを再起動してみました。

$ chsh -s /bin/zsh

次のコマンドを実行すれば、使用中のシェルが確認できます。

% echo $SHELL
/bin/zsh

ちなみに、次のコマンドでは、使用可能なシェルの一覧を取得することができ、

% cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

いざという時には、zsh に切り替えた時と同様にして、簡単にシェルを変更できます。

% chsh -s /bin/bash

さておき、あとは「 オススメのターミナル初期設定の手順 」に書いたような bash の設定ファイルを元に、zsh の設定ファイルを作成するだけです。

まぁ、作成するだけ、と言っても、これは、現在の設定ファイルを作り込んでいる人ほど、大変な作業になると思いますが、頑張りましょう。笑

~/.zshrc
PROMPT="%B%F{green}%n@[%*]%f%b:%B%F{blue}%~%f%b%# "

alias ls='ls -AFG'
alias ll='ls -hlt'

alias history='history -Di'

# http://zsh.sourceforge.net/Doc/Release/Options.html#Description-of-Options
setopt hist_ignore_dups
setopt share_history
HISTSIZE=1000
HISTFILE=~/.zsh_history
SAVEHIST=100000

setopt nonomatch
setopt correct

autoload -Uz compinit && compinit

# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#History-Control
bindkey '^P' history-beginning-search-backward
bindkey '^N' history-beginning-search-forward

# https://git-scm.com/book/en/v2/Appendix-A%3A-Git-in-Other-Environments-Git-in-Zsh
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT=\$vcs_info_msg_0_
# PROMPT=\$vcs_info_msg_0_'%# '
# zstyle ':vcs_info:git:*' formats '%b'

# http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#vcs_005finfo-Configuration
zstyle ':vcs_info:git:*' formats '[%F{yellow}%b%f]%u%c'
zstyle ':vcs_info:git:*' actionformats '[%b|%a]'
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr ":%F{green}!%f"
zstyle ':vcs_info:git:*' unstagedstr ":%F{red}+%f"

最後に、次のコマンドで実行して、ちゃんと設定できているかどうか、確認しておきます。

% source ~/.zshrc

これで、とりあえず、初期設定は終わりとしますが、どうやら zsh には、数多くの便利な機能があるようなので、随時、設定ファイルを更新して、徐々に使いこなしていきたいですね。

上記の設定ファイルでは、Git 関連も含むプロンプトの表示やエイリアス、コマンド履歴周りの設定を除けば、特別な機能として、以下のものを導入しています。

コマンドのスペルミスの修正

~/.zshrc
setopt correct

コマンドを実行しようとした際に、スペルミスがあれば、修正を提案してくれます。

コマンドの補完

~/.zshrc
autoload -Uz compinit && compinit

コマンドを途中まで打って「 Tab 」を押すと、残りの部分を補完してくれます。

コマンド履歴の検索

~/.zshrc
bindkey '^P' history-beginning-search-backward
bindkey '^N' history-beginning-search-forward

上記の例では、コマンドを途中まで打って「 control + P 」を押すと、それに続く内容を、以前に実行したコマンドを順番に遡って検索できます。

行き過ぎたら「 control + N 」を押せば、逆方向へ検索できます。

121
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
121
Help us understand the problem. What is going on with this article?