| @技術/プログラミング

この前、さくら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に指定しておかないと意味ないけどね。