15 votos

chsh no cambia $SHELL

Estoy teniendo algunas dificultades en cambiar el valor de $SHELL de OSX, la iTerm de la aplicación. iTerm está empezando en /bin/zsh, pero el valor de $SHELL no parece cambiar.

Lo que he hecho:

  1. Cambiado "comando", como /bin/zsh en iTerm la ventana de configuración.
  2. Ejecutado chsh a cambio de que el shell /bin/zsh.
  3. Confirmado iTerm se inicia en /bin/zsh

NOTA #1: En OSX stock del terminal de la app "Terminal.app":

echo $SHELL
/bin/zsh

NOTA #2: De OSX, la popular aplicación terminal, "iTerm.app":

$ echo $SHELL
/bin/bash

$ echo $USER
$ melvkim

$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made

10voto

melvkim Puntos 38

El problema era que el "iTerm" de la aplicación de configuración en conflicto con la shell. Para resolver, he restablecer "login shell de comandos" en iTerm ventana de preferencias:

iTerm.app -> Preferencias -> Perfiles -> General -> Comando -> haga Clic en "shell de inicio de Sesión"

Entonces, me ejecutado chsh de modificarlo /bin/zsh.

Para reproducir el problema (tener $SHELL establecer como /bin/bash/, aunque el shell de inicio de sesión es /bin/zsh), sólo tenía que cambiar "iTerm" configuración de volver a "Comando: /bin/zsh/".

2voto

ramius Puntos 198

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.

1voto

savinger Puntos 126

El -s bandera chsh sólo se trata de cambiar el shell, y probablemente falla debido a Open Directory: El habitual sistema UNIX 'chsh' sería modificar la /etc/passwd de entrada. Sin embargo, yo era capaz de ejecutar chsh sin argumentos, que me dio un editor, y la siguiente información:

# Changing user information for nevin.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Shell: /bin/tcsh
Full Name: Nevin Williams
Office Location:
Office Phone:
Home Phone:

Yo era capaz de editar el "Shell:" la entrada a /bin/zsh, y la posterior de la Terminal de windows se abrió con un Z-prompt de la shell.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X