15 votos

¿Por qué no puedo usar zsh?

Así que actualicé a Catalina. En realidad es más como una instalación fresca, sólo copié a través de los pocos archivos que quería mantener.

La cáscara me dice ahora, con gran ayuda, que..:

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

La información sobre esa página muestra de forma útil las instrucciones de la GUI que no funcionan. Específicamente, dice "Control-clic en su nombre de usuario en la lista de usuarios a la izquierda, luego elija Opciones Avanzadas", pero Control-clic no hace nada. Así que informé de eso en la página.

Cuando uso el comando sugerido en su lugar:

hostname:~ username$ chsh -s /bin/zsh
Changing shell for username.
Password for username: 
chsh: Operation was denied because the current credentials do not have the appropriate privileges.  Operation was denied because the current credentials do not have the appropriate privileges.
chsh: no changes made

Esto es diferente a " No se puede usar zsh shell en Catalina " porque me sale un mensaje de error de que no lo hacen.

También es diferente a " chsh: La operación fue denegada porque las credenciales actuales no tienen los privilegios apropiados " porque parece que en su caso, estaban usando iTerm. Yo estoy usando el Terminal.app por defecto.

Lo he probado con sudo sólo para reírme, pero por supuesto hace esto, lo cual tiene mucho sentido:

hostname:~ username$ sudo chsh -s /bin/zsh
Password: 
Changing shell for root.

Entonces, ¿cuál es el problema aquí? ¿Cómo debo hacerlo?

Actualización:

Bueno, esto es interesante. Dos solicitudes de contraseña, y luego un mensaje de error diferente sobre el parámetro no válido.

hostname:~ username$ sudo chsh -s /bin/zsh username
Password: 
Changing shell for username.
Password for username: 
chsh: One of the parameters provided was invalid.  One of the parameters provided was invalid.
chsh: no changes made

Este error es nuevo para mí, pero aparentemente también es nuevo para Google, así que soy oficialmente un pionero.

Actualización: ¡Feliz Año Nuevo!

De nuevo en la oficina.

Al hurgar en los comandos habíamos determinado que Centrify estaba en uso. Centrify viene con un adupdate herramienta que se supone que se utiliza para cambiar la información del usuario. Sin embargo, con la ayuda de los informáticos, lo hemos intentado y se nos sigue denegando, pero ahora es más bien un error.

$ adupdate modify user -s /bin/zsh username
An error occurred while trying to modify a user while in Auto Zone.
The options (-d, -g, -i, -u, -s, -l, -m, -o, -X, -z) cannot be used during this operation.
Please consult the manual pages for more information.

Primeras impresiones: ¿Qué es Auto Zone y cómo salgo de él?

17voto

moodforaday Puntos 2633

@bmike ya ha ofrecido la solución más fácil, pero quería volver a las instrucciones de la GUI no funciona.

Encontré que las instrucciones de Apple aquí pueden ser confusas. Control-Clic no hará nada a menos que primero "desbloquee" el Usuarios y grupos como se muestra a continuación en el cuadro azul:

screenshot of Users and Groups system preference pane.

Una vez que lo tengas desbloqueado, asegúrate de hacer clic en la zona blanca de la izquierda para acceder a "Opciones avanzadas " como se muestra arriba con la flecha azul.

Entonces debería poder acceder a las opciones, incluido el shell, desde el panel Avanzado.

15voto

Oskar Puntos 1242

No use sudo directamente sin algunos interruptores adicionales - su invocación cambiaría el shell de Root, no su cuenta de usuario.

Si su nombre corto es mike (puede comprobarlo con whoami o who am i

sudo -s
chsh /bin/zsh mike

O si conoces un nombre corto y una contraseña de administrador, puedes omitir el sudo inicialmente

chsh -u admin /bin/zsh

@ me si todavía tiene problemas, hay un par de otras maneras de pelar este gato, pero creo que una vez que se especifica el otro usuario y su a Root primero, usted debe estar listo. Debería haber trabajado fuera de la caja, pero espero que no tenemos que ir por ese camino de conejo.

2voto

Nate Puntos 220

Esta es una respuesta un tanto especulativa, suponiendo que su cuenta proviene de un dominio de Active Directory al que está vinculado su Mac. Puede comprobarlo ejecutando:

dscl /Search -read /Users/"$USER" | grep AppleMetaNodeLocation

Si imprime algo como " AppleMetaNodeLocation: /Active Directory/<somedomain> ", entonces su cuenta proviene de AD, y esta respuesta puede te funcione. Digo "podría" porque no tengo una configuración para probar adecuadamente, y no he jugado con estas cosas durante varias versiones. Si no imprime algo sobre "/Active Directory/", esta respuesta no es relevante.

Antes de seguir adelante, yo haría un registro de su configuración actual de enlace AD. Ejecute:

sudo dsconfigad -show

...y guarde el resultado en algún lugar, para que pueda consultarlo si necesita volver a poner las cosas como estaban. Si no imprime nada, entonces hay algo más raro y no te recomiendo que sigas adelante hasta que sepas lo que es. Probablemente se mostrará algo como " Default user Shell = /bin/bash "; si es así, estoy bastante seguro de que esa es root de tu problema. Para cambiar esto, ejecute:

sudo dsconfigad -shell /bin/zsh

...y luego probablemente reiniciar para asegurarse de que el cambio surta efecto. Ah, y comprueba las preferencias de tu Terminal para asegurarte de que no están anulando eso (ver aquí ).

Explicación (si te interesa): en unix (incluyendo MacOS), cada registro de cuenta de usuario tiene un atributo que controla su shell por defecto. Cambiar el shell del usuario (con chsh o lo que sea) edita el registro del usuario para cambiar el valor de ese atributo. Pero las cuentas de Active Directory no tienen este atributo (a menos que el dominio AD tenga habilitada la Gestión de Identidades para Unix -- pero eso es obsoleto ), por lo que el conector AD de Apple falsifica un valor para esto por sí mismo. Como es falso, no se puede cambiar. Pero se puede cambiar el valor que el conector AD utiliza para falsificarlo, y eso es lo que el dsconfigad lo hace.

1voto

sole Puntos 6

Después de indagar un poco más, ¡por fin una solución que funciona!

$ sudo su -
# vim /etc/centrifydc/passwd.ovr

Se ha añadido esta línea:

+username:::::::/bin/zsh:::::::

Salvado, de vuelta a la cáscara...

# chmod 644 /etc/centrifydc/passwd.ovr
# adreload
# adflush

Salga de MacOS y vuelva a entrar, y el shell por defecto es ahora zsh.

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