(予防策は @nitaking さんからです🙇♂️🙇♂️)
要約
- fishの導入記事で
chsh -s /usr/local/bin/fish
が紹介されてるけどけっこう危ない - 誤って
brew uninstall fish
とかやるとshellが使えなくなる(なった) - mac標準のターミナルやiTerm2でシェル指定ログインが可能なので、そこから入って再インストールした
- デフォルトがbashの場合、.bash_profileの最後で任意のシェルにログインするコマンドを入れておき、デフォルトは変えない方が良い
(OS: MacOS Catalina 10.15.7)
やらかしの顛末🐟
インターン入社初日、支給されたMacの環境構築に勤しんでた際、brewでインストールしたmysqlやredisのバージョンをいったん変える必要があったため、brew uninstal ~~~
をやっていたときにやらかしが発生。
fishを使い始めて日が浅かったこともあり、Tabキーでサジェストを適用できるのが便利で無駄にペシペシしていたところ、いつの間にかbrew uninstall fish
が入力されており、それに気付かぬままEnter。気づいた時にはすでに何も実行できない状態になってました。
適当にググって見つけた記事で紹介されていたchsh -s /usr/local/bin/fish
で、デフォルトのログインシェル自体をfishに変更していたため、各種ターミナルは起動したそばからログイン失敗→プロセス終了。コマンドが打てなきゃログインシェルも変えられない、といった感じ
以下、解決した方法と予防策について書きます。
解決策: Mac標準ターミナルやiTerm2でログインシェルを指定して開く
今回の問題を解決した方法です。
Mac標準ターミナルの場合
ターミナルを開き、
[環境設定]→[一般]
に入って**「開くシェル」をコマンド(完全パス)で指定(例: bash→/bin/bash
)**したのち、新規ウィンドウ/タブを開く
iTerm2の場合
[Preference]→[Profile]
で、**Commandを「Custom Shell」**に変更、任意のシェルでログインする設定にした上で、新規ウィンドウ/タブを開く
予防策: .bash_profileで立ち上げ時に都度シェルを変更する
fishの導入について書かれている記事では、chshコマンドを使ってログインシェルをfishに変更しているものが少なくありません。
$ chsh -s /usr/local/bin/fish
しかし、以下のような理由でfishが使えない場合、コマンドが叩けない事態に陥ります。
- fishを誤ってuninstallした場合(今回のやらかし)
- installしたfishがうまく動かないのを確認せずchshを叩いた場合
その場合は後ほど示すやり方で違うシェルを開くことができるのですが、デフォルトシェルは変えずに.bash_profileにてターミナルのセッション立ち上げ時に都度fishへ変更することで、fishに入れない場合でもデフォルトシェルのまま続行できます。
echo exec fish >> ~/.bash_profile
or
sudo nano ~/.bash_profile
# ~既存の記述たち
# fish起動
fish
書き終えたら^x
→Y
で保存
.bashrc
だと、bashへのログインに都度反応して記述内容の反映を行ってしまうため、.bash_profile
に書き込みます
おしまい
雑ですいません
入社初日に心臓潰すくらい焦った なおせてよかった