アップグレードの問題に関して、@ mklement0が投稿した優れた説明と解決策については、こちらをご覧くださいbash。
私のシステム(OS X 10.10.1)で反対のことを行う際に同様の問題がありました:bashインストール後にデフォルトのログインシェルを再度oh-my-zsh作成しzsh、それをデフォルトにし、bashHomebrewを使用して3.2.53から4.3.30にアップグレードしました(なぜAppleは旧bashバージョンのヨセミテを出荷しているのですか?)
私が考えるSHELL環境変数が反映されますがないではないユーザーのために、実際のデフォルトのログインシェルを制御します。例えば、言うならば、bashあなたのデフォルトだった、あなたは新しい開いbash端末からシェルウィンドウを、次に$ export SHELL="/bin/zsh"; echo "$SHELL"示すだろう/bin/zshが、あなたが端末から新しいシェルウィンドウを開いてない場合ので、実際の変更は行われません$ echo $0、あなたが見ることになる-bash(は$0名前とパスが含まれていますシェルウィンドウを開始したコマンド(この場合bashは)の-横にあり、その横はログインシェルであることを示しています)。
@ mklement0が指摘したように、ユーザーの実際のデフォルトのログインシェルUserShellは、システムの内部データベースにあるユーザーのレコードのプロパティによって制御されます。これは、コマンドラインユーティリティを使用して照会および更新できますdscl。この情報は、シェルウィンドウを開いたときにターミナルアプリに渡されます。
何chsh -s /bin/zsh行うことは、この変更であるUserShellに設定するプロパティをzsh使用すると、実行して、これを確認することができます- dscl . -read /Users/$USER/ UserShellその後すぐに、そしてあなたが表示されますUserShell: /bin/zsh。しかし、変更がされていない、あなたが何かやるまでは、現在のウィンドウで行なわexec su - $USER@ mklement0により示唆されるように、またはあなたまで近いとシェルウィンドウを開きます。
/etc/shellsか?マニュアルには、指定したシェルがそのファイルにない場合、標準のシェルとは見なされないと記載されています。