ARCHIVESDRIVE HB

オイラはホームベーカリー!

Big Sur にしたらターミナルで入力できないなった

ないなった。

ロケ地

  • macOSX Big Sur 11.0.1
  • iTerm2 v3.4.0
  • oh-my-zsh

結論から

標準の /bin/zsh を利用すれば解決します。

Big Sur にしました

Catalina 見送ったので、大台バージョンアップだしってことで Big Sur クリーンインストールして入れました。TimeMachine 復旧でほぼデータ戻せたけど、 Electron 実装のアプリが軒並みクラッシュして再インストールしたり、 brew で管理してる Formula を一斉にアップデートするために brew upgrade したりしました。

したら入力できないなった

brew upgrade 終わったっぽいけど動かなくなったな……? という感じだったので、再起動したところ以下のような状態でターミナルが動かなくなりました。 iTerm2 も同じ状態です。

f:id:donbulinux:20201116223309p:plain
虚無を映す You have mail

原因切り分け

なんだこれアプリケーションとシェルどっちの問題だ? と悩んでいたのですが、検索した所、以下のような書き込みを見つけ「それはそう!」となったので、新規ユーザを作成してターミナルを起動確認してみました。

discussionsjapan.apple.com

原因は OS バンドルじゃないログインシェル

新規ユーザでターミナルを起動した所、無事ターミナルが起動し zsh の入力プロンプトを拝むことができました。 無いとは思ったのですが、この時点で急遽思い立ったので、 brew doctor 実行しましたが、 Warnings が出ているだけで Error は存在していなかったので、やはり brew ではなくログインシェルの問題のようです。

という訳でちょっと条件を変更して検索した所、以下の書き込みを見つけました。

developer.apple.com

オッやはりー? という感じだったので、元のユーザにログインしなおして ターミナル > 環境設定 > 一般 から、 開くシェル > コマンド (完全パス)/bin/zsh へ変更してみます。 その後、新しくタブを開けば無事に入力プロンプトを拝むことができました。 やったぁ。

f:id:donbulinux:20201116224330p:plain
デフォルトのログインシェルから変更する

chsh でログインシェルを変更していた人間を頃すだけの変更 (むしろバンドル以外の zsh を許さない?) とかめっちゃ罠であるネ……。 しかし移行直後は動いてたのよくわかんないな、 zsh のバージョンも一因なのか?

iTerm2 もなおす

上記の対応だと ターミナル.app のみが対象なので、以下のコマンドを使ってデフォルトのログインシェルを macOSX Big Sur の zsh へ変更します。

chsh -s /bin/zsh

これで iTerm2 でも無事利用できるようになりました。 移行前環境で利用していた oh-my-zsh などを設定したドットファイルも、問題なく適用されて使用感そのままとなりました。 とりあえずこれで様子を見ようと思います。

ダメだったヤツ

上記書き込みでも「ワイの環境ではダメだったよ……」と書いてる外人兄貴、何がだめだったのか書いてないので不明ですが、僕の手元で試した所、以下は効果がありませんでした。

  • iTerm2 のプロファイルから General > Command > Command に変更し /usr/local/bin/zsh --login を指定する
  • iTerm2 の設定で Enable session restoration を無効化する