15 votes

Pourquoi je ne peux pas utiliser zsh ?

J'ai donc fait une mise à jour vers Catalina. En fait, c'est plutôt une nouvelle installation, j'ai seulement copié les quelques fichiers que je voulais garder.

Le shell me dit maintenant de manière utile :

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.

Les informations sur cette page montre utilement des instructions GUI qui ne fonctionnent pas. Plus précisément, il est indiqué "Control-cliquez sur votre nom d'utilisateur dans la liste des utilisateurs à gauche, puis choisissez Options avancées", mais Control-cliquez ne fait rien. J'ai donc signalé cela sur la page.

Lorsque j'utilise la commande suggérée à la place :

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

C'est différent de " Impossible d'utiliser le shell zsh dans Catalina "parce que je reçois un message d'erreur indiquant que ce n'est pas le cas.

C'est aussi différent de " chsh : L'opération a été refusée car les informations d'identification actuelles ne possèdent pas les privilèges appropriés. "car il semble que dans leur cas, ils utilisaient iTerm. J'utilise le Terminal.app par défaut.

J'ai essayé de le faire avec sudo, juste pour rire, mais bien sûr, il fait cela, ce qui est parfaitement logique :

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

Alors, c'est quoi le problème ici ? Comment suis-je censé faire ?

Mise à jour :

Eh bien, ceci est intéressant. Deux demandes de mot de passe, puis un message d'erreur différent indiquant que le paramètre n'est pas valide.

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

Cette erreur est nouvelle pour moi, mais apparemment elle l'est aussi pour Google, donc je suis officiellement un pionnier !

Mise à jour : Bonne année !

De retour au bureau.

En fouillant dans les commandes, nous avions déterminé que Centrify était utilisé. Centrify est livré avec un adupdate qui est censé être utilisé pour modifier les informations de l'utilisateur. Avec l'aide du service informatique, nous l'avons pourtant essayé et nous avons toujours été refusés, mais maintenant c'est plutôt une erreur.

$ 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.

Premières impressions : Qu'est-ce qu'Auto Zone et comment puis-je m'en sortir ?

17voto

moodforaday Points 2633

@bmike a déjà proposé la solution la plus simple, mais je voulais revenir sur les instructions de l'interface graphique qui ne fonctionnent pas.

J'ai trouvé que les instructions d'Apple ici peuvent être confuses. Control-Clic ne fera rien à moins que vous ne "déverrouilliez" d'abord l'écran de l'ordinateur. Utilisateurs et groupes comme indiqué ci-dessous dans l'encadré bleu :

screenshot of Users and Groups system preference pane.

Une fois que vous l'avez déverrouillé, assurez-vous que vous cliquez dans la zone blanche à gauche pour accéder aux "Options avancées " comme indiqué ci-dessus avec la flèche bleue.

Vous devriez ensuite pouvoir accéder aux options, y compris le shell, à partir du volet avancé.

15voto

Oskar Points 1242

N'utilisez pas sudo directement sans quelques interrupteurs supplémentaires - votre invocation changerait le shell de Root, pas votre compte utilisateur.

Si votre nom court est mike (vous pouvez vérifier avec whoami o who am i

sudo -s
chsh /bin/zsh mike

Ou si vous connaissez le nom court et le mot de passe d'un administrateur, vous pouvez sauter le sudo au départ.

chsh -u admin /bin/zsh

@ moi si vous avez encore des problèmes, il y a plusieurs autres façons de faire, mais je pense qu'une fois que vous avez spécifié l'autre utilisateur et que vous vous êtes connecté à Root en premier, vous devriez être prêt. Cela aurait dû fonctionner dès la sortie de la boîte, mais j'espère que nous n'aurons pas à descendre ce chemin de lapin.

2voto

Gordon Davisson Points 30215

Il s'agit d'une réponse quelque peu spéculative, en partant du principe que votre compte provient d'un domaine Active Directory auquel votre Mac est lié. Vous pouvez le vérifier en exécutant :

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

S'il imprime quelque chose comme " AppleMetaNodeLocation: /Active Directory/<somedomain> ", alors votre compte provient d'AD, et cette réponse pourrait fonctionner pour vous. Je dis "pourrait" parce que je n'ai pas de configuration pour tester correctement, et je n'ai pas joué avec ce genre de choses depuis plusieurs versions. S'il n'affiche pas quelque chose à propos de "/Active Directory/", cette réponse n'est pas pertinente.

Avant de poursuivre, j'enregistrerai votre configuration actuelle de liaison AD. Exécutez :

sudo dsconfigad -show

...et enregistrez son résultat quelque part, pour pouvoir vous y référer si vous avez besoin de remettre les choses en place. S'il n'imprime rien, alors il y a quelque chose de plus étrange qui se passe et je ne vous recommande pas de continuer jusqu'à ce que vous sachiez ce que c'est. Il y aura probablement quelque chose comme " Default user Shell = /bin/bash "Si c'est le cas, je suis presque sûr que c'est la racine de votre problème. Pour changer ça, exécutez :

sudo dsconfigad -shell /bin/zsh

...et puis probablement redémarrer pour s'assurer que le changement prend effet. Oh, et vérifiez les préférences de votre Terminal pour vous assurer qu'elles ne remplacent pas cela (cf. aquí ).

Explication (si cela vous intéresse) : sous unix (y compris MacOS), chaque enregistrement de compte utilisateur possède un attribut qui contrôle son shell par défaut. Changer l'interpréteur de commandes de l'utilisateur (avec chsh ou autre) modifie l'enregistrement de l'utilisateur pour changer la valeur de cet attribut. Mais les comptes Active Directory n'ont pas cet attribut (à moins que la gestion d'identité pour Unix ne soit activée dans le domaine AD, mais c'est une question de sécurité). déprécié ), donc le connecteur AD d'Apple invente lui-même une valeur pour cela. Parce qu'elle est fausse, elle ne peut pas vraiment être modifiée. Mais vous pouvez changer la valeur utilisée par le connecteur AD pour la falsifier, et c'est ce que fait la fonction dsconfigad fait.

1voto

Hakanai Points 380

Après avoir creusé un peu plus, j'ai enfin trouvé une solution qui fonctionne !

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

J'ai ajouté cette ligne :

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

Sauvé, retour à la coquille...

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

Déconnectez-vous de MacOS et reconnectez-vous, et le shell par défaut est maintenant zsh.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X