89
85

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

遅ればせながら bash から zsh に移行してみた

Last updated at Posted at 2020-01-19

愛機Mac bookのコンソールに警告が出てくるようになった。

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 を Mac のデフォルトシェルとして使う - Apple サポート

Catalina から、ついにデフォルトが zsh になったのか、ということで各種サイトを確認しながら移行することに

zsh への切り替え

冒頭の警告に書いてあるとおりのコマンドですぐに切り替わった。

$ chsh -s /bin/zsh
% zsh --version
zsh 5.7.1 (x86_64-apple-darwin19.0)

zsh の設定

zsh乗り換え後の初期設定として、簡易的なプラグイン機構やテーマ機構を有する oh-my-zsh を設定している記事がよく引っかかるが、見えないところでシェルが重くなるのは本末転倒で避けたいので、これはスキップする。

まだ oh-my-zsh で消耗してるの? - Qiita

Bash の設定を Zsh の設定に移行する

(注:雑に言うと)「.bash_profile」と「.zprofile」、「.bashrc」と「.zshrc」が対応しているので、内容をコピーします。

% cat ~/.bash_profile >> ~/.zprofile
% cat ~/.bashrc >> ~/.zshrc
  • 雑すぎるので、これらのファイルは後で見直す。

zsh-completionsをインストール

zsh-completions は、Zshの補完機能を強化する。

% brew install zsh-completions

Homebrewでインストール後に .zshrc に設定を追加することで有効になる。

.zshrc
# 補完機能を有効にする
autoload -Uz compinit
compinit

# sudo の後ろでコマンド名を補完する
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
                   /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin

fpath=(/usr/local/share/zsh-completions $fpath)

その他 zsh 拡張をインストール

同じ要領(Homebrew)で他の拡張機能もインストール&設定した。

zsh-autosuggestions

コマンドの自動サジェスト機能

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

zsh-syntax-highlighting

コマンドのシンタックスハイライト機能

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

zsh の設定ファイル???

.zprofile とか .zshrc とか具体的にどう用途が違うのだろうか?

zshの設定ファイルの読み込み順序と使い方Tipsまとめ - Qiita

zshenv > zprofile > zshrc > zloginの順で、
それぞれglobalを読み込んだ後で、localを上書き読み込み

ということで、私はもともと .bashrc.bash_profile を呼び出す設定にしていた(雑)ので、zsh 移行後に ssh-agent が2回立ち上がるようになって異変を感じていたが、原因はこれか。.zshrc では .zprofile を呼び出さないようにした。すべて .zshrc に書けば大半は問題ない気がしてきた。

Zsh - ArchWiki

zsh: The Z Shell Manual

ここらへんも勉強になる。

.zshrc .zprofile のブラッシュアップ

できあがり

2020/01/03時点でのできあがり状況は、こんな感じです。

Kobito.mjEa6M.png

GitHub :octocat: https://github.com/shionit/dotfiles

zsh 今後の活用

まずは履歴やコマンド補完やハイライトが便利〜という程度ですが、理解を深めて活用範囲を広げられるといいなーと(小並感

bashとzshの違い。bashからの乗り換えで気をつけるべき16の事柄

ここ↑らへんを読んで、まずは理解に努めます。

zsh 移行のメリット?

まとめようと思ったのですが、上記の通り「履歴やコマンド補完やハイライトが便利」くらいしかまだ見いだせず。

他にもこんなのがあるよ、というがあれば教えていただけると助かります!

(2020/03/09追記)頂いたコメントをもとに調べたら、このサイトで紹介されている各種機能がいい感じでした!

zshで究極のオペレーションを:連載|gihyo.jp … 技術評論社

  • グローバルエイリアス
  • 接尾辞エイリアス
  • プロセス置換
  • etc.

zsh 移行のデメリット

シェルスクリプトの制御構文を始め、互換性が保たれているので、特段デメリットに感じるものは見つけられていません。気軽に踏み込んでもいいかもですね。

89
85
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
89
85

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?