Mira aquí por la excelente explicación y solución publicado por @mklement0 [en relación a un bash
problema de actualización.
He tenido un problema similar en hacer todo lo contrario en mi sistema (OS X 10.10.1): dar bash
el valor predeterminado shell de inicio de sesión de nuevo después de que yo había instalado oh-my-zsh
, lo que hizo zsh
el valor predeterminado y, a continuación, actualizar bash
de 3.2.53 a 4.3.30 el uso de Homebrew (¿por qué Apple envío de Yosemite con un viejo bash
versión?).
Creo que el SHELL
variable de entorno refleja pero no el control de la real predeterminado shell de inicio de sesión para el usuario. Por ejemplo, si, por ejemplo, bash
estaba predeterminado y se abre un nuevo bash
ventana de shell de la terminal, a continuación, $ export SHELL="/bin/zsh"; echo "$SHELL"
mostraría /bin/zsh
pero que no se producirá el cambio, porque si se abre una nueva ventana de terminal y hacer $ echo $0
a continuación, habría que ver -bash
($0
contiene el nombre y la ruta del comando que inicia la ventana de shell, en este caso, bash
, y el -
junto a indica que se trata de un shell de inicio de sesión).
Como @mklement0 señaló el predeterminado real shell de inicio de sesión para el usuario es controlada por el UserShell
de la propiedad en el registro del usuario en el sistema de la base de datos interna - esto puede ser consultado y actualizado utilizando la utilidad de línea de comandos dscl
. Esta información se pasa a la terminal de la aplicación cuando se abre una ventana de shell.
Lo chsh -s /bin/zsh
que hace es cambiar esta UserShell
propiedad para establecer a zsh
- esto se puede verificar haciendo dscl . -read /Users/$USER/ UserShell
inmediatamente después, y verá UserShell: /bin/zsh
. Pero el cambio no se efectúa en la ventana actual, hasta que hace algo como exec su - $USER
según lo sugerido por @mklement0, o hasta que cierre y abra una ventana de shell.