macOS 10.15 Catalina でターミナルのやつが zsh になった

デフォルトのシェルが bash から zsh というものになったそうだ。
zsh は bash の上位互換だそうで、つまり良きものなのだろう。
zsh を使ってみる
Mojave から Catalina へのアップグレードした場合だと bash がまだ生き残っている。すぐには zsh にならないのだ。
ターミナルを立ち上げると次のようなメッセージが表示される。
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.
よくわかんねーながらもchsh -s /bin/zsh
ってのをやれって書いてある気がするのでやってみる。
と、そこはもう zsh。
読み方もわかんねーような世界に来てしまった。雑種、みたいな発音で大丈夫だろうか。
zsh には入力補完というのがある。
試しにcd
の後ろに半角スペースを入力してからtabキーを押してみる。

tabキーをを押すたびに、カレントディレクトリのなかにある、移動先の候補を補完してくれる。これ、すごい便利だ。
もうひとつcontrol+rキーを押すとイクリメンタル・サーチで過去の履歴を検索できちゃう。

control+rで後方検索、contro+sで前方検索になるとのこと。
これもかっこいい。
ちなみに、ターミナルの「環境設定」>「一般」タブ>「開くシェル」の欄で、bash に戻すこともできる。「コマンド」を選択し、完全パスを/bin/bash
にすれば OK。

bash との違い
そもそも bash との違いはあまりないみたいだ。
筆者が使ってるだいたいのシェルスクリプトが動く、と思う。
ただ、ひとつ大きく違うのは配列の開始番号だ。
zsh の配列は 0 ではなく 1 から始まるらしい。
こちらの、Catalinaでデフォルトシェルが「zsh」に変わる、bashとの違いは? – 新・OS X ハッキング!(241) | マイナビニュースの記事を例文をそのまんまシェルスクリプトにしてみた。
📝 zshtest.sh
#!/bin/bash
array=(apple orange peach)
for i in `seq 0 3`; do
echo "array[$i] = ${array[$i]}"
done;
一行目を#!/bin/bash
にして試してみる。
$ zshtest.sh
array[0] = apple
array[1] = orange
array[2] = peach
array[3] =
array の先頭は 0 番目になっている。
次に一行目を#!/bin/zsh
にしてふたたび実行。
% zshtest.sh
array[0] =
array[1] = apple
array[2] = orange
array[3] = peach
今度は先頭が 1 から開始されている。これは覚えておいたほうがよさげ。
zshrc などの設置
bash_profile とかで書いたものがあれば、それを zsh でもほぼ流用できる。
こういう冴えたやり方が紹介されていた。
cat .bash_profile >> .zprofile
プロンプトの書き方だけは違う。
zsh の設定ファイルは、.zshenv > .zprofile > .zshrc > .zlogin の順番で読みこまれる。違いはよくわからないが、プロンプトの設定は zshrc に書かないと反映されなかった。
筆者はパスは .zshenv に書いた。
export PATH=$PATH:~/bin:/usr/local/opt
zshrc にプロンプトとかエイリアス、関数を書いた。
PROMPT='%K{cyan}%T%k %n@%m %F{yellow}%~%f
%F{green}[>_ ] >%f '
alias zrc='open -a CotEditor ~/.zshrc'
dict(){
open dict://$1
}
プロンプトの書き方は下の記事が詳しい。
参考にさせていただきました。ありがとうございます。
最近のコメント