見出し画像

bashからzshに乗り換える方法


今更だけど、bashからzshへシェルの移行をやったのでメモ。

ターミナルでBashを開いたら下のように、

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.

「現在のデフォルトのシェルはzshです。」という内容のアナウンスが表示されるようになった。

zshはbashより補完機能が優れていて使いやすいそうなので、重い腰を上げて切り替えることにした。

※最近PCを購入した人は初めからzshになっているはず。

環境


PC: MacBook Pro (Retina, 13-inch, Mid 2014)
MacOS : Catalina10.15.7
旧shell:version 3.2.57(1)-release (x86_64-apple-darwin19)
新shell:

1.shell切替

アナウンスに表示されている下のコマンドですぐに切り替わった。

(chshはchange shell コマンド)

$ chsh -s /bin/zsh

バージョン確認

% zsh --version 
zsh 5.7.1 (x86_64-apple-darwin19.0)

2.設定ファイルの更新

私の場合、bashの設定を.bash_profileに書いていたので、新しく.zshrcを作成して中身を移す。

※bashrcも使っている人はそちらも要移行。

3.補完機能の強化/zsh-completions

補完機能の強化のために、「zsh-completions」をインストールします。

% brew install zsh-completions

すると、下のようにアクティブ化のための手順が表示されます。

To activate these completions, add the following to your .zshrc:
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi

You may also need to force rebuild `zcompdump`:
rm -f ~/.zcompdump; compinit

Additionally, if you receive "zsh compinit: insecure directories" warnings when attempting to load these completions, you may need to run this:to load these completions, you may need to run this:chmod go-w '/usr/local/share'

という訳で、下のスクリプトを.zshrcへ追加。

if type brew &>/dev/null; then
FPATH=$ /usr/local/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi

これでzsh-completionsのアクティブ化が完了しました。

使用例:

例えば、ターミナルで「git p」まで入力してタブキーを押すと、

下のように候補が表示されます。便利ですね。

pack-objects -- create packed archive of objects
pack-redundant -- find redundant pack files
pack-refs -- pack heads and tags for efficient repository access
parse-remote -- routines to help parsing remote repository access parameters
patch-id -- compute unique ID for a patch
prune -- prune all unreachable objects from the object database
prune-packed -- remove extra objects that are already in pack files
pull -- fetch from and merge with another repository or local branch
push -- update remote refs along with associated objects

4.オートサジェストの追加/zsh-autosuggestions

% brew install zsh-completions
source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh

5.シンタックスハイライト機能/zsh-syntax-highlighting

% brew install zsh-syntax-highlighting
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

とりあえず、これで移行は完了です!

参考URL:


おまけ(Homebrewのshallow clone制限)

本件とは関係ないですが、brew install を使う時に下のエラーが出たので対処法をメモしておきます。

 homebrew-core is a shallow clone.
To `brew update`, first run:
 git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow

This restriction has been made on GitHub's request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
automatically to avoid repeatedly performing an expensive unshallow operation in
CI systems (which should instead be fixed to not use shallow clones). Sorry for
the inconvenience!

エラーメッセージを読むとどうやら、githubからshallow cloneの制限がかかったとのこと。

エラーメッセージにしたがって、下を実行。

(10分くらい時間がかかりました。)

% git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow

続いてbrew updateを実行。

% brew update

これで解決。




この記事が気に入ったらサポートをしてみませんか?