アップグレードの問題に関して、@ mklement0が投稿した優れた説明と解決策については、こちらをご覧くださいbash
。
私のシステム(OS X 10.10.1)で反対のことを行う際に同様の問題がありました:bash
インストール後にデフォルトのログインシェルを再度oh-my-zsh
作成しzsh
、それをデフォルトにし、bash
Homebrewを使用して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
か?マニュアルには、指定したシェルがそのファイルにない場合、標準のシェルとは見なされないと記載されています。