Ubuntuのシェルをbashからzshに変更する

macOS は zsh で使っていて快適なので,Ubuntu もそれに合わせることにしました.

zsh への変更手順

現在のシェルの確認

terminal

$ echo $SHELL
/bin/bash

デフォルトでは bash です.

シェルのインストール

初めに,zsh が既にインストール済みか確認します.

terminal

$ which zsh

パスが表示されなければ下記のコマンドでインストールします.要管理者権限です.

terminal

$ sudo apt-get install zsh
$ chsh -s $(which 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 --- 

いずれかを選んで進むことができます.

.zshrc が存在しないので表示されていますが,この後作成するのであれば1,そうでなければ2を選ぶとよいです.

ちなみに,2にしておけばコマンドの補完機能を有効にするコマンドが自動で埋め込まれるので,自分で設定を書かないで進めるのであればおすすめです.

Oh My Zsh の導入

これはオプション的な内容です.

zsh 導入自体は上記で終了していますが,せっかくなので機能や見た目を使いやすくしておきたいと思います.

Oh My Zsh は zsh のマネージャーみたいなものです.

テーマやプラグインで見た目を変えたり機能を追加したりすることができます.

インストール

(追記 2021.3.20)

Ubuntu で install.sh を実行すると /root/.oh-my-zsh にインストールされてしまうようなので,手動インストールしたほうが良さそうです,

terminal

$ git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh
// backup the previous settings
$ cp ~/.zshrc ~/.zshrc.orig
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

macOS では以下のコマンドも問題なく使用できます.

terminal

$ sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

実行すると .zshrc が上書きされますが,それまで使っていたものは .zshrc.pre-oh-my-zsh として保存されています.

プラグインの追加

インストールが終了した時点でデフォルトのテーマやプラグインが設定されています.

最初に設定されているプラグインは git のみで,他にも最初から数十個のプラグインが用意されています.

有効にしすぎるとシェルが重くなるので注意が必要ですが,使いたいものは設定に追加していくとより便利に使えます.

また,デフォルトで含まれていないものでも利用できます.

今回は,個人的に必須だと思うプラグイン二つを入れておきます.

  • zsh-syntax-highlighting: コマンドのハイライト表示
  • zsh-completions: 自動補完

Oh My Zsh では ~/.oh-my-zsh/custom/plugin 以下のディレクトリにサードパーティのプラグインを入れることになっています.

terminal

$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
$ git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions

それぞれのプラグインの GitHub を見ると Oh My Zsh への導入方法の説明があるので,それをコピペすれば OK です.

クローンしたら ~/.zshrc に下記の内容を追加します.

terminal

$ vi ~/.zshrc

...

plugins=(
  git <- 元からある
  zsh-syntax-highlighting
  zsh-completions
)

autoload -U compinit && compinit -i

...

設定ファイルを下記のコマンドで反映させれば完了です.

terminal

$ source ~/.zshrc