現在行われているWWDC2019で 次のmacOSの名前がCatalinaだと発表され iTunesが解体されたりいろいろな新しい機能が発表されたりしていますが、 そんな中で次のmacOSのデフォルトシェルがZshになるとの話が出ています。
macOSでのデフォルトシェル設定
macOSではGUIから設定したりdscl
というコマンドを使って
デフォルト(ログイン)シェルを変更することが出来ます。
ターミナルアプリごとに使うものを設定することも出来たりします。
現在の初期設定では/bin/bash
がデフォルトシェルになっています。
Linux系のシステムでも通常は/bin/bash
を使っています。
FreeBSD系だと/bin/tcsh
が使われていて
MacもMac OS X v10.2 (Jaguar)まではtcsh
がデフォルトシェルでした。
結構前からZshが便利、という話は非常に多く出てくるようになりましたが
いまのところ知る限りではzsh
がデフォルトシェルであるUnixは無いと思います。
macOS CatalinaからZshがデフォルトシェルに?
そんな中、次期macOS CatalinaからデフォルトシェルがZshになるとの話が出ています。
現状Beta版での話ですが、もし実際のリリースでも入るとすると かなり大きな意味を持ちます。
Bashに比べてZshは多機能で インタラクティブシェルとして好んで使う人は多数いますが、 多くの環境でデフォルトシェルがBashなので すべてを変更するのが大変だったりすることもあり Bashを主に使ってる人の方が未だに多いと思います。
基本的にコマンドラインでコマンドを打ってるだけであればそれほど大きな違いはありませんが、 ちょっと凝ったことをしようとすると結構な違いがあります。
簡単なところでは
配列の0番目の存在(Bashは配列は0
番から、Zshは1
番から)かな、と思います。
もちろん設定ファイルの書き方も違う部分があり、 .bashrcとは別に.zshrcを用意してやる必要があります。
多分、macOS Catalinaがこのまま配布されて皆がアップグレードする様なことがあれば、 最初にコマンドプロンプトが違う、ということに気づいて .bashrcが効かない、どうしてだ、という騒ぎになりそうですが。。。
そのあたりの周知は今後どのようにされていくのでしょうか?
Zshに乗り換えるか
私自身、Zshを何度か使おうとして便利だな、という思いはあり、 ちょくちょく設定ファイルの更新などはしていますが 現状手元のMacでの作業よりもいろいろなサーバーに入って作業することも多く、 それらすべてデフォルトシェルを変更するのが面倒なので 今の所Bashをメインに使っています。
ただMacのデフォルトシェルがZshになると話は別で、 他の環境でも結局.bashrcを取り込む様な作業をしているところだったら 最初にデフォルトシェルを変更しても良いわけでちょっと考えものです。
もちろんシステムとしてデフォルトシェルを簡単に変えられないところもありますが
主に作業しているところでは変更は可能だし、
Zsh自体はほとんどの環境に入ってるので最悪ログイン後にzsh
で変更しても良いわけで。
今の設定ファイルでは.bashrc、.zshrcともに.commonrcという 共通設定ファイルを読み込むようにしていて、ここにBash/Zsh共通の項目をまとめています。
これによって簡単に変更は出来るようにしているつもりです。
ZshにあってBashにない魅力の一つとしてはTab補完をするときに 候補の中からカーソル移動で選択出来る機能がありますが、 それを無理やりBashで実装しよう、とかちょっとやったりしてた時期もありました。
そんなことせずに素直にZshに乗り換えるべきか…