Honmushi blog
bash から zsh へ移行する2020/10/26

bash から zsh へ移行する

bash を使っていましたが、zshに乗り換えました。

結構前から mac のデフォルトのシェルが zsh になっています。そちらに合わせて zsh 使おうという対応です。 もろもろの設定を備忘のためにメモしています。

zsh の設定ファイル

.zshenv に、常に反映したい設定を定義を定義します。 .zshrcにはシェルを起動した環境にて反映する設定を定義します。

git のブランチを表示

zsh のカレントディレクトリの情報に、現在のブランチ名を表示するように設定します。

ホームディレクトリに .zsh ディレクトリを作成して、以下のコマンドを実行してスクリプトを取得します。

curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

そして、zshrc に以下を記述します。

fpath=(~/.zsh $fpath)
if [ -f ${HOME}/.zsh/git-prompt.sh ]; then
  source ${HOME}/.zsh/git-prompt.sh
fi

setopt PROMPT_SUBST ; PS1='%F{magenta}%c%f$(__git_ps1 " (%s)") %F{yellow}\$%f '

現在のブランチ名と、その状態が表示されるようになりました。

git のコマンド補完

zsh にて、git のコマンド補完が動作するように設定します。

.zsh ディレクトリにて、以下のコマンドを実行してスクリプトを取得します。 依存しているため .bash の方のファイルも必要です。

curl -O https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
curl -O https://raw.github.com/git/git/master/contrib/completion/git-completion.zsh

_git にリネームします。

mv git-completion.zsh _git

そして、zshrc に以下を記述します。

if [ -f ${HOME}/.zsh/git-completion.zsh ]; then
  zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.zsh
fi
autoload -U compinit
compinit -u

tab キーにて git のコマンドやブランチ名などの補完が効くようになりました。

ディレクトリやユーザー名の表示内容

上記で行った設定にて、シェルの左側のユーザー名やマシン名の表示についても設定しています。

setopt PROMPT_SUBST ; PS1='%F{magenta}%c%f$(__git_ps1 " (%s)") %F{yellow}\$%f '

ざっくりとは必要ないものを削除して、わかりやすいように色をつけています。

%F{magenta} --- %f のように %F で文字色の変更ができ、%f で文字色の変更を解除できます。 ちなみに f を k にすると、背景色を設定できます。

シェル右側の表示

シェルの右側にはカレントディレクトリでも表示しておきます。日付や時間でもいいですね。

RPROMPT='%F{cyan}%~%f'

デフォルトのシェルを zsh に変更

以下のコマンドを実行することで、デフォルトで起動するシェルをzshに変更できます。

chsh -s /bin/zsh

終わりに

zsh に移行できました。他にも bash で使っていたlsコマンドのエイリアスとかも設定しています。

問題なく動くことが確認できたら、github の dotfiles リポジトリなんかに push しておくと良いですよね。

  • このエントリーをはてなブックマークに追加