Tengo algunas dificultades para cambiar el valor de $SHELLla aplicación iTerm de OSX. iTerm está comenzando /bin/zsh, pero el valor de $SHELLno parece cambiar.
Qué he hecho:
- Se modificó el "comando" como
/bin/zshen la ventana de configuración de iTerm. - Ejecutado
chshpara 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é
chshpara 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
-sindicadorchshsolo intenta cambiar el shell, y probablemente falla debido a Open Directory: el sistema habitual de UNIX 'chsh' modificaría la/etc/passwdentrada. Sin embargo, pude ejecutarchshsin argumentos, lo que me dio un editor y la siguiente información:Pude editar la entrada "Shell:"
/bin/zshy las ventanas de Terminal posteriores se abrieron con un indicador de Z-shell.fuente
chshsin argumentos. Aún sin suerte. La variable no cambia. De hecho, cuando se cargó el editor, se mostró/bin/zsh.$SHELLen 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
bashproblema de actualización.Tuve un problema similar al hacer lo contrario en mi sistema (OS X 10.10.1): hacer
bashel shell de inicio de sesión predeterminado nuevamente después de haberlo instaladooh-my-zsh, lo que hizozshel predeterminado, y luego actualizarbashde 3.2.53 a 4.3.30 usando Homebrew ( ¿Por qué Apple envía Yosemite con unabashversión anterior?).Creo que la
SHELLvariable de entorno refleja pero no controla el shell de inicio de sesión predeterminado real para el usuario. Por ejemplo, si, por ejemplo,bashera su valor predeterminado y abre una nuevabashventana de shell desde la terminal, entonces$ export SHELL="/bin/zsh"; echo "$SHELL"se mostrará/bin/zshpero 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($0contiene 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
UserShellpropiedad 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/zshhace es cambiar estaUserShellpropiedad para establecerlazsh: puede verificar esto haciendodscl . -read /Users/$USER/ UserShellinmediatamente después, y veráUserShell: /bin/zsh. Pero el cambio no se efectúa en la ventana actual, hasta que haga algo comoexec su - $USERlo sugerido por @ mklement0, o hasta que cierre y abra una ventana de shell.fuente
Intente ejecutar el comando:
chsh -s /bin/zshdesde el terminal Mac predeterminado.fuente