ないなった。
ロケ地
結論から
標準の /bin/zsh
を利用すれば解決します。
Big Sur にしました
Catalina 見送ったので、大台バージョンアップだしってことで Big Sur クリーンインストールして入れました。TimeMachine 復旧でほぼデータ戻せたけど、 Electron 実装のアプリが軒並みクラッシュして再インストールしたり、 brew
で管理してる Formula を一斉にアップデートするために brew upgrade
したりしました。
したら入力できないなった
brew upgrade
終わったっぽいけど動かなくなったな……? という感じだったので、再起動したところ以下のような状態でターミナルが動かなくなりました。 iTerm2 も同じ状態です。
原因切り分け
なんだこれアプリケーションとシェルどっちの問題だ? と悩んでいたのですが、検索した所、以下のような書き込みを見つけ「それはそう!」となったので、新規ユーザを作成してターミナルを起動確認してみました。
原因は OS バンドルじゃないログインシェル
新規ユーザでターミナルを起動した所、無事ターミナルが起動し zsh の入力プロンプトを拝むことができました。 無いとは思ったのですが、この時点で急遽思い立ったので、 brew doctor
実行しましたが、 Warnings が出ているだけで Error は存在していなかったので、やはり brew ではなくログインシェルの問題のようです。
という訳でちょっと条件を変更して検索した所、以下の書き込みを見つけました。
オッやはりー? という感じだったので、元のユーザにログインしなおして ターミナル > 環境設定 > 一般 から、 開くシェル > コマンド (完全パス) を /bin/zsh
へ変更してみます。 その後、新しくタブを開けば無事に入力プロンプトを拝むことができました。 やったぁ。
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
を無効化する