MacOS「Catalina」とともにbashからzshへ乗り換え。zsh設定手順からおすすめ設定もろもろまとめ













MacOSCatalinaがリリースされ変わったこといえば,デフォルトのShellがbashではなくzshになったことでしょうか。
僕は,黒い画面と言ったら「bash1択でしょ」としか考えていなかったからzshってなんやねんってところから始まる。

なので,今回はbashからzshへお引越しを行うことにした。
この際にzshにも慣れてみようと思う。

Catalina」とともにbashからzshへ

そもそも僕はzshへ乗り換えなくったってbashで十分満足していた。
仕事ではbashを使うからzshを使うメリットもないし,むしろ扱うShellは統一していた方が楽だろうし…

なぜzshへ乗り換えるのか。

The default interactive shell is now zsh.

Catalinaへアップデートしたあとにターミナルを開くとMacから提案されたのだ。

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
Macターミナル

CatalinaのデフォルトShellはzshだよ。乗り換えなよ。

zshの設定

zshのインストール

bashからzshへ乗り換える場合,Homebrewでzshのインストールを行ったりするのだが,Catalinaへアップデートしたらzshもすでに使える環境になっていたので今回はインストールの必要はない

念の為,zshを使えるかどうか確認しておきましょうか。

$ cat /etc/shells

使えるShell一覧が表示されます。

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

/bin/zshがあれば問題ありません。zshを使う準備は整っています。


(Homebrew等でzshを入れた人は/usr/local/bin/zsh/etc/shellsに追記する必要があります。Catalinaをお使いの場合はまぁ問題ないでしょう。)

ログインシェルの変更

ターミナルでログインをした際にzshで起動するように設定していきます。
これもコマンド一発です。

$ chsh -s /bin/zsh

これで,bashからzshへ切り替わりました。

chsh: no changes made

*エラーとなった場合

これは,chsh -s /bin/zshでエラーとなりbashから切り替わらなかった方向けになります。chsh: no changes madeという文言が表示され,エラーになるかと思います。

この場合
ターミナル > 環境設定から一般

ターミナル>環境設定>一般

開くシェル:の項目から

  1. デフォルトのログインシェルを選択し,ターミナルでchsh -s /bin/zshコマンドをもう一度打つ。
  2. コマンド(完全パス)を選択し,/bin/zshと入力

このどちらかで設定可能です。

必要な設定をしておく

無事にzshへの乗りかえができたかと思います。
これで,晴れてzshライフを送ることになります。

さて,いつものようにコマンドを叩いて開発を勧めていきます。
ところがどっこい,自分で設定したaliasが使えないではないか。

あぁそうか.bashrcに記載していたのはbashに限り有効なのか。。

.zprofileと.zshrc

zshにも.bash_profile.bashrcの役割を果たすファイルがもちろん存在する。
そう.zprofile.zshrcだ。これにbashで使っていた設定(alias)もろもろを引き継いでおきましょう。これまでの設定を壊さないためにも追記で書きましょう。

$ cat .bash_profile >> .zprofile
$ cat .bashrc >> .zshrc

この2つのこコマンドでOK,sourceコマンドなり再ログインを行うと設定が完了しているかと思います。

zshおすすめ設定

zshおすすめ設定①

zshの強みといえばなんといっても補完機能!!らしい。。
たしかにzshを導入したあとに少し触れてみるとTabキーを押したときの挙動がbashとは明らかに違う。(どう違うかはzshを使って確認してみてください)個人的にはbashよりも扱いやすいような気がする。

cdで移動する際なんか,bashでTabキー2回叩いていたディレクトリ表示がTabキー1回で補完してくれるので最初は違和感だったが,慣れてしまえば楽々だった。

さらにzshの補完機能を強化

zshまだまだこんなもんじゃないよ。もっと扱いやすくするためにzsh-completionsを導入してみよう。

Homebrewでインストールしていきます。

$ brew instsall zsh-completions

.zshrcに以下を記述すれば補完機能がもっと強化されます。

# zsh-completions(補完機能)の設定
if [ -e /usr/local/share/zsh-completions ]; then
    fpath=(/usr/local/share/zsh-completions $fpath)
fi
autoload -U compinit
compinit -u

sourceコマンドなり再ログインを行うと設定が完了しているかと思います。

これがどういうものなのかと言いますと…


試しにgitコマンドの補完を行ってみます。
gitのあとにスペースを入れTabキーを押してみます。

$ git (ここでTabキー)
add                -- add file contents to index
am                 -- apply patches from a mailbox
apply              -- apply patch to files and/or to index
archimport         -- import an Arch repository into git
archive            -- create archive of files from named tree
bisect             -- find, by binary search, change that introduced a bug
blame              -- show what revision and author last modified each line of a file
branch             -- list, create, or delete branches
bundle             -- move objects and refs by archive
cat-file           -- provide content or type information for repository objects
check-attr         -- display gitattributes information
check-ignore       -- debug gitignore/exclude files
check-mailmap      -- show canonical names and email addresses of contacts
check-ref-format   -- ensure that a reference name is well formed
checkout           -- checkout branch or paths to working tree
checkout-index     -- copy files from index to working directory
cherry             -- find commits not merged upstream
cherry-pick        -- apply changes introduced by some existing commits
citool             -- graphical alternative to git commit
clean              -- remove untracked files from working tree
clone              -- clone repository into new directory
commit             -- record changes to repository
:
:

git コマンドのオプションと説明が一覧で出てきました。
gitのオプションなんだっけ??のときに大活躍
(ですが,こんなにコマンドを使うことはないですけどね。主要なコマンドしか僕は使ったことありません。)

どのようなコマンドの補完が用意されているかは以下を参考に
https://github.com/zsh-users/zsh-completions/tree/master/src

zshおすすめ設定②

bashからzshに乗り換えた直後になにか違和感を感じた。
そう。プロンプトの表示がなんだか少し見慣れない。

僕の場合プロンプトにはカレントディレクトリのパスを表示させたいのだが,defaultのzshにはパスの表記がなかった。

zshプロンプトにカレントディレクトリのパスを表示

毎度おなじみの.zshrcに記述をしていく。
表記の規則は以下の表を参考にしてほしい。

パラメーター意味
%Mホスト名localhost.localdomain
%mホスト名localhost
%dカレントディレクトリ(フルパス)/Users/tiyuri/work
%~カレントディレクトリ(フルパス2)~/work
%Cカレントディレクトリ(相対パス)tiyuri
%cカレントディレクトリ(相対パス)~
%nユーザ名tiyuri
%#ユーザ種別#(root) %(root以外)
%?直前のコマンドの戻り値0
%D日付(yy-mm-dd)15-02-10
%W日付(yy/mm/dd)15/02/10
%w日付(day dd)Tue 10
%*時間(hhss)12:34:56
%T時間(hh:mm)12:34
%t時間(hh:mm(am/pm))00:34PM

よく使いそうなパラメーターを表記しています。(参考)

こんな感じで.zshrcに書いてあげればOK

# prompt
PROMPT='%m:%c %n$ '

zshプロンプトに色を付ける

プロンプトに色付けを行いたい場合は%F{color}%fのように囲んであげれば良い。

こんな感じかな。

 # prompt
PROMPT='%m@%n %F{green}%~%f$ ' 

カレントディレクトリを色付しています。


しかし,greenに指定したつもりが何故か黄色いです。
そしてredに指定したら緑でした。英語表記のcolor指定だとなんかハチャメチャな設定になります。

なので,%F{color}%fのcolorは数字でも指定できます。(こっちのほうが正確に色指定できます。)

ざっとこんな感じですかね。

  • 0:黒色
  • 1:緑色
  • 2:黄色
  • 3:オレンジ色
  • 4:青色
  • 5:紫色
  • 6:赤色
  • 7:シアン

ちなみに僕の設定はこれ

 # prompt
PROMPT='%m@%n %F{1}%~%f$ '

カレントディレクトリは緑表示になったし,まぁいいんじゃない??

文字色以外にも背景色を変えたい場合は%K{color}%kで囲んであげれば良いです。

最後に

まだまだbashからzshに乗り換えホヤホヤなので,込み入った設定は行っていないのですが,MacOS「Catalina」とともにzshへ乗り換えることを検討している方には参考にしてほしい基本の「き」の字のおすすめ設定を紹介しました。

zshに乗り換えてもbshの設定に持っていこうとするあたりがbashへの未練タラタラ感がすごいですけどね。世間のzsh使いの方含め…

ありがとう

★人気の記事一覧

合法的に女の子に精液の匂いを嗅がせる方法

【精子を食べる!?】食ザーが理にかなっているというお話

[Froala Design Blocks ]無料でオシャレなサイト作成ができるHTMLのテンプレート

スムージーは本当に健康に効果があるのか化学の観点でのみ考えてみる












★人気の記事一覧

合法的に女の子に精液の匂いを嗅がせる方法

【精子を食べる!?】食ザーが理にかなっているというお話

[Froala Design Blocks ]無料でオシャレなサイト作成ができるHTMLのテンプレート

スムージーは本当に健康に効果があるのか化学の観点でのみ考えてみる

気に入ったらLet's Share!!

コメントを残す

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

ABOUTこの記事をかいた人

ちゆり

6年間化学を専攻していたのになぜか一部上場のIT企業のエンジニアへ。脱サラ田舎暮らしに憧れ,なんだかんだプログラミングが好き。口癖は仕事辞めたい。凡人にはなりたくない凡人。