Tengo algunas dificultades para cambiar el valor de $SHELL
la aplicación iTerm de OSX. iTerm está comenzando /bin/zsh
, pero el valor de $SHELL
no parece cambiar.
Qué he hecho:
- Se modificó el "comando" como
/bin/zsh
en la ventana de configuración de iTerm. - Ejecutado
chsh
para cambiar el shell a/bin/zsh
. - ITerm confirmado se inicia en
/bin/zsh
NOTA # 1: En la aplicación de terminal de stock de OSX, "Terminal.app":
echo $SHELL
/bin/zsh
NOTA # 2: En la popular aplicación de terminal de OSX, "iTerm.app":
$ echo $SHELL
/bin/bash
$ echo $USER
$ melvkim
$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made
/etc/shells
? El manual establece que si el shell que especifica no está en ese archivo, no se considera un shell estándar.Respuestas:
El problema era la configuración conflictiva de la aplicación "iTerm" con el shell. Para resolverlo, restablecí el comando "shell de inicio de sesión" en la ventana de preferencias de iTerm:
Luego, ejecuté
chsh
para modificarlo como/bin/zsh
.Para reproducir el problema (con $ SHELL configurado como
/bin/bash/
, aunque el shell de inicio de sesión lo es/bin/zsh
), solo tuve que cambiar la configuración de "iTerm" de nuevo a "Comando: / bin / zsh /".fuente
El
-s
indicadorchsh
solo intenta cambiar el shell, y probablemente falla debido a Open Directory: el sistema habitual de UNIX 'chsh' modificaría la/etc/passwd
entrada. Sin embargo, pude ejecutarchsh
sin argumentos, lo que me dio un editor y la siguiente información:Pude editar la entrada "Shell:"
/bin/zsh
y las ventanas de Terminal posteriores se abrieron con un indicador de Z-shell.fuente
chsh
sin argumentos. Aún sin suerte. La variable no cambia. De hecho, cuando se cargó el editor, se mostró/bin/zsh
.$SHELL
en iTerm. Por favor, consulte mi respuesta para más detalles ... ¡Gracias!Busque aquí la excelente explicación y solución publicada por @ mklement0 [en relación con un
bash
problema de actualización.Tuve un problema similar al hacer lo contrario en mi sistema (OS X 10.10.1): hacer
bash
el shell de inicio de sesión predeterminado nuevamente después de haberlo instaladooh-my-zsh
, lo que hizozsh
el predeterminado, y luego actualizarbash
de 3.2.53 a 4.3.30 usando Homebrew ( ¿Por qué Apple envía Yosemite con unabash
versión anterior?).Creo que la
SHELL
variable de entorno refleja pero no controla el shell de inicio de sesión predeterminado real para el usuario. Por ejemplo, si, por ejemplo,bash
era su valor predeterminado y abre una nuevabash
ventana de shell desde la terminal, entonces$ export SHELL="/bin/zsh"; echo "$SHELL"
se mostrará/bin/zsh
pero no se producirá ningún cambio real porque si abre una nueva ventana de shell desde la terminal y lo hace$ echo $0
, verá-bash
($0
contiene el nombre y la ruta del comando que inició la ventana de shell, en este casobash
, y al-
lado indica que es un shell de inicio de sesión).Como @ mklement0 señaló que el shell de inicio de sesión predeterminado real para el usuario está controlado por la
UserShell
propiedad en el registro del usuario en la base de datos interna del sistema; esto se puede consultar y actualizar mediante la utilidad de línea de comandosdscl
. Esta información pasará a su aplicación de terminal cuando abra una ventana de shell.Lo que
chsh -s /bin/zsh
hace es cambiar estaUserShell
propiedad para establecerlazsh
: puede verificar esto haciendodscl . -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 haga algo comoexec su - $USER
lo sugerido por @ mklement0, o hasta que cierre y abra una ventana de shell.fuente
Intente ejecutar el comando:
chsh -s /bin/zsh
desde el terminal Mac predeterminado.fuente