cygwinのログインシェルをbashにする

cygwin上のzshのプロンプトがおかしいのでカスタマイズしてみるの続きです。

せっかくzshを入れたのは良いものの、このままではbashが起動してからzshを毎回起動しなければなりません。
大概こういうときは、chshコマンドを使うのですが、どうやらcygwinには含まれないようです。

/etc/passwdがない…!

では直接/etc/passwdファイルを弄ろうとなる訳ですが、実はこのファイルが存在しないわけです。
コマンドのファイルもない…詰んだ状態ですが、無ければ作りましょう。


$ man mkpasswd

としてマニュアルを読んでみると、


Don't use this command to generate a local /etc/passwd file, unless you
really need one. See the Cygwin User's Guide for more information.

と、このコマンドを使うなと書かれていますね。
しかし、See the Cygwin User’s Guideってことで見てみましたが、他の方法が見当たらない。
ググってみると以下のページがヒットしました。

Set Default Shell in Cygwin – Stack Overflow

/etc/nsswitch.confを編集するのが良さそうです。


$ vim /etc/nsswitch.conf

db_shell: /bin/zsh

このような感じで設定すれば、無事ログインシェルが変わります。