chsh no cambia $ SHELL

8

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

Lo que he hecho:

  1. Se cambió el "comando" como /bin/zsh en la ventana de configuración de iTerm.
  2. Se ejecutó chsh para cambiar el shell a /bin/zsh .
  3. Se confirmó el inicio de iTerm en /bin/zsh

NOTA # 1: En la aplicación de terminal de valores 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
    
pregunta melvynkim 25.05.2014 - 02:20

4 respuestas

4

El problema fue la configuración conflictiva de la aplicación "iTerm" con el shell. Para resolverlo, he restablecido el comando "shell de inicio de sesión" en la ventana de preferencias de iTerm:

  

iTerm.app - > Preferencias - > Perfiles - > General - > Comando - > Haga clic en "Login shell"

Luego, ejecuté chsh para modificarlo como /bin/zsh .

Para reproducir el problema (habiendo establecido $ SHELL como /bin/bash/ , aunque el shell de inicio de sesión es /bin/zsh ), solo tuve que cambiar la configuración "iTerm" a "Comando: / bin / zsh /".

    
respondido por el melvynkim 26.05.2014 - 20:36
1

Busque aquí para obtener una excelente explicación y solución publicada por @ mklement0 [en relación con un problema de actualización bash .

Tuve un problema similar al hacer lo contrario en mi sistema (OS X 10.10.1): hacer que bash vuelva a ser el shell de inicio de sesión predeterminado después de haber instalado oh-my-zsh , que hizo que zsh fuera el valor predeterminado, y luego actualizar bash de 3.2.53 a 4.3.30 usando Homebrew (¿por qué Apple está enviando a Yosemite con una versión antigua de bash ?).

Creo que la variable de entorno SHELL refleja, pero no controla el shell de inicio de sesión predeterminado real para el usuario. Por ejemplo, si, digamos, bash era su valor predeterminado y abre una nueva ventana de shell bash desde el terminal, entonces $ export SHELL="/bin/zsh"; echo "$SHELL" mostrará /bin/zsh pero no se producirá ningún cambio real porque si abre una nueva ventana de shell desde el terminal y hacer $ echo $0 , entonces vería -bash ( $0 contiene el nombre y la ruta del comando que inició la ventana de shell, en este caso bash , y el - al lado indica que es un shell de inicio de sesión).

Como @ mklement0 señaló, el shell de inicio de sesión predeterminado real para el usuario está controlado por la propiedad UserShell en el registro del usuario en la base de datos interna del sistema. Esto se puede consultar y actualizar usando la utilidad de línea de comandos dscl . 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 esta propiedad UserShell para establecerla en zsh . Puedes verificar esto haciendo dscl . -read /Users/$USER/ UserShell inmediatamente después, y verás UserShell: /bin/zsh . Pero el cambio se no se realiza en la ventana actual, hasta que haga algo como exec su - $USER como lo sugiere @ mklement0, o hasta que cierre y abra una ventana de shell.

    
respondido por el ramius 29.12.2014 - 00:41
0

El indicador -s para chsh solo intenta cambiar el shell, y probablemente falla debido a Open Directory: el sistema habitual de UNIX 'chsh' modificaría la entrada /etc/passwd . Sin embargo, pude ejecutar chsh sin argumentos, lo 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:

Pude editar la entrada "Shell:" en /bin/zsh , y las ventanas de Terminal posteriores se abrieron con un indicador de Z-shell.

    
respondido por el Nevin Williams 25.05.2014 - 03:58
0

Intente ejecutar el comando: chsh -s /bin/zsh desde el terminal Mac predeterminado.

    
respondido por el mohitmayank 07.02.2017 - 16:54

Lea otras preguntas en las etiquetas