Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2892

chsh -s /usr/local/bin/fish をするな

$
0
0

(予防策は @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 
~/.bash_profile
# ~既存の記述たち# fish起動
fish

書き終えたら^xYで保存

.bashrcだと、bashへのログインに都度反応して記述内容の反映を行ってしまうため、.bash_profileに書き込みます

おしまい

雑ですいません
入社初日に心臓潰すくらい焦った なおせてよかった


Viewing all articles
Browse latest Browse all 2892

Trending Articles