この前、さくらVPSに入れているUbuntuのzshで ls
とか cd
とか打ったとき、変なエラーメッセージが出るようになった。原因不明。しょうがないのでzshをインストールしなおそうと、chsh
してbashとかに切り替えずに sudo apt-get remove zsh
してしまった。そこで混乱してしまって Ctrl + D
しちゃったもんだからSSH閉じてしまって、なんとUbuntuにログインできなくなってしまった。
Ubuntuは root
というアカウントがなくてなんでも sudo
するか、 sudo su
で無理矢理rootになるしかないので、rootでログインしてchshしてやるという救済手段がとれず、にっちもさっちもいかなくなってUbuntuを再インストールした。
ちょっと調べたら、こういうアクシデントを防ぐために、/etc/shells にzshを足さず、chshでデフォルトシェルにもしないという人もいるみたい。.bashrc
に次のように書くそうだ。
if [ -f /bin/zsh ]; then
exec /bin/zsh
fi
これだと何かのトラブルでzshが起動しないことがあってもbashでログインできるということらしい。zshがちゃんとしてるときはzshでログインするという理屈だ。
しかしこれには結構重い副作用があるみたい。
一理ある。
というわけでUbuntuやrootでsshできない環境ででzshを使う場合は、何らかのトラブルでzshが起動しない、シェルにログインできなくなることを想定し、保険として普段はまったく使わない非常用のアカウントを作っておくと良いと思った。もちろんsudoersに指定しておかないと意味ないけどね。