¿Cómo cambio el shell predeterminado de un usuario en OSX?

33

¿Cuál es la forma correcta de OSX de cambiar el shell predeterminado de un usuario? Cuando busqué en Google, encontré varias referencias a una aplicación llamada NetInfo Manager, pero no pude encontrarla en mi sistema. También hubo referencias a una versión de línea de comandos llamada niutil que tampoco encontré.

David Holm
fuente
posible duplicado de ¿Cómo configuro mi shell en Mac OS X?
Daniel Beck

Respuestas:

52

para <= 10.4 - administrador de netinfo, / users / whoever / shell

para> = 10.5

  1. Vaya a Preferencias del sistema -> Cuentas
  2. Haga clic en el ícono de bloqueo para desbloquear el panel de preferencias
  3. Haga clic derecho (o control-clic) en el usuario y seleccione "opciones avanzadas"
  4. Editar campo de inicio de sesión
Chopper3
fuente
55
Wow, después de 8 años de usar OS X, no sabía acerca de hacer clic en el control en las preferencias de los usuarios: supongo que esto se agregó en 10.5, como lo señaló. +1
jkp
1
¡Control-Click es asombroso!
Eonil
1
Salvavidas después de mover el shell de mi cuenta fuera de la RUTA ... ¡no se pudo iniciar la Terminal para arreglar a través de la línea de comando!
davemyron
2
¿Ya no funciona en el Capitan?
MarcusJ
Es cierto, este es el problema con este tipo de cosas, 7 años más adelante y las cosas han cambiado: ¿por qué no investigar un poco usted mismo, agregar y responder y se votará, así es como funcionan las cosas, mejor que simplemente responder pequeñas respuestas?
Chopper3
33
sudo chsh -s /path/to/shell username

donde shell es el que desea para ese usuario. sudono es necesario si conoce usernamela contraseña.

man chsh

para mas ejemplos

churnd
fuente
también funciona para root para su, que no está visible en el panel de control. ¿Yo creo que?
Chris F Carroll
44
También puede ejecutar solo chshy cambiar el campo de shell. Si obtiene un error como chsh: /usr/local/bin/bash: non-standard shell, agréguelo /usr/local/bin/basha /etc/shells.
Lri
3
Tal vez algo cambió en 10.9, pero este comando ahora arroja un mensaje de uso. Parece que la sintaxis correcta es ahorachsh -s /path/to/shell username
Matthematics
9

NetInfo ha sido reemplazado por Directory Services (dscl) y se puede observar que el shell predeterminado para Mac OS X desde 10.3 ha sido bash. Antes de eso era tcsh.

Si necesita hacer esto desde la línea de comando (por ejemplo, para presionar a través de ARD o remotamente a través de SSH) puede ejecutar:

sudo dscl localhost -change /Local/Default/Users/USERNAME shell OLD_SHELL NEW_SHELL
#In Use:
sudo dscl localhost -change /Local/Default/Users/chealion shell /bin/bash /bin/zsh

Si no está seguro del shell actual, puede ejecutar:

sudo dscl localhost -read /Local/Default/Users/USERNAME shell

Si el usuario no es un usuario local, la ruta simplemente cambiará y, si es necesario, cambiaría localhostel nombre de su Open Directory Server. (Suponiendo que se ejecuta 10.5).

La información se almacena en .plists (xml) en /private/var/db/dslocal/- sin embargo, no desea editar los archivos plist a mano.

Chealion
fuente
7

Para 10.10:

no shellpero UserShell:

sudo dscl localhost -change /Local/Default/Users/USERNAME UserShell /bin/bash /bin/ksh
willem
fuente