1 votes

Comment réparer Terminal.app lorsque mon shell a été réglé sur une valeur illégale ?

Aujourd'hui, j'étais en train d'essayer de désinstaller macports quand j'ai remarqué qu'une erreur apparaissait à chaque fois que j'utilisais sudo. J'ai tué Terminal et essayé de le redémarrer, ce qui a échoué avec le message d'erreur "Vous n'êtes pas autorisé à exécuter cette application" et "L'administrateur a défini votre shell sur une valeur illégale". Comment puis-je résoudre ce problème ?

2voto

Chris Page Points 7394

J'avais déjà résolu le problème en utilisant l'Utilitaire de disque pour réparer les permissions

Si la réparation des permissions résout le problème, la cause est (presque certainement) que les permissions de /etc/shells étaient incorrects, empêchant le terminal de le lire.

/etc/shells contient une liste de programmes shell valides, et Terminal vérifie si le shell de votre compte d'utilisateur est répertorié. Si ce n'est pas le cas, il produit le message "shell illégal". S'il ne peut pas lire le fichier /etc/shells en raison de problèmes d'autorisation, il produit également ce message.

Plus rarement, certaines personnes ont rencontré ce problème lorsque la /etc/shells a été altéré d'une manière ou d'une autre de sorte qu'il est vide, auquel cas vous devrez restaurer son contenu en le copiant depuis un bon système, ou avec une restauration Time Machine, etc.

Pour répondre à votre question initiale :

Si Terminal se plaint d'un "shell illégal", cela signifie que le shell de votre compte d'utilisateur n'a pas été trouvé dans le répertoire /etc/shells .

Vous pouvez voir quels shells sont considérés comme valides avec cat /etc/shells .

Vous pouvez vérifier quel shell votre compte utilisateur est configuré pour utiliser avec echo $SHELL ou en lisant les informations sur l'utilisateur avec dscl . -read "/Users/$LOGNAME" UserShell . Ou vous pouvez utiliser Préférences du système :

  1. Ouvrir Préférences du système et aller à Utilisateurs et groupes .
  2. Cliquez sur le cadenas et saisissez votre mot de passe pour pouvoir lire/régler les paramètres utilisateur.
  3. Control-Click (ou Right-Click) sur votre utilisateur pour obtenir un menu contextuel et choisir Options avancées .

La feuille Options avancées affiche des informations détaillées sur le compte de l'utilisateur, y compris le nom du chemin du shell. Vous pouvez également l'utiliser pour modifier le nom de chemin de l'interpréteur de commandes afin de réactiver les connexions s'il a été défini sur une valeur qui ne figure pas dans la liste des options avancées. /etc/shells .

1voto

Jeff Bloom Points 225

Si vous obtenez des messages d'erreur étranges dans vos fenêtres de terminal lors de leur première ouverture, cela indique probablement un problème avec les préférences de votre terminal. Essayez de supprimer (ou simplement de renommer) le fichier des préférences du terminal ( ~/Library/Preferences/com.apple.Terminal.plist ) et ensuite redémarrer l'application Terminal. (Source)

Si le problème persiste, regardez ce que vous avez dans vos fichiers dot shell : ~/.bash_profile , ~/.bashrc et autres. Si vous ne trouvez pas l'origine du problème, essayez de supprimer (ou simplement de renommer) ces dotfiles.

Un autre endroit où chercher les problèmes est le default.term fichier sous ~/Library/Application Support/Terminal . Il s'agit du fichier qui stocke les paramètres par défaut de Terminal Windows.

Si tout cela échoue, utilisez l'utilitaire de disque pour réparer les permissions du terminal. (Source)

1voto

Jing Li Points 171

J'utilise zsh, et dans les paramètres, je ne sais pas pourquoi $SHELL est réglé sur /usr/local/bin/zsh puis je l'ai changé en /bin/zsh Le problème est résolu. Dans mon cas, la réparation des permissions ou les autres approches ci-dessus n'ont pas aidé. Mais, merci quand même.

0voto

J'ai eu la même erreur après avoir lancé chsh et fait une faute de frappe dans le chemin pour le shell de connexion.

Je n'ai pas pu ouvrir Terminal, et rien ne s'est produit lorsque j'ai essayé d'afficher la feuille d'options avancées dans le panneau de préférences Utilisateurs et groupes. J'ai pu exécuter chsh -s /bin/bash sur iTerm 2 cependant.

Vous pouvez également changer le shell de connexion par défaut avec dscl ou modifier /var/db/dslocal/nodes/Default/users/$USER.plist directement.

0voto

softisch Points 19

Pour ma part, j'ai reçu cette erreur à cause d'une faute de frappe de chsh également. J'utilise homebrew et (très bêtement) j'ai configuré mon shell sur le binaire dans /usr/local/Cellar plutôt que sur le lien dynamique dans /usr/local/bin. Le résultat est que le terminal a été bloqué mais, étonnamment, iTerm ne l'a pas fait. Ce fil de discussion a été très utile pour résoudre mon problème.

Pour éviter mon problème : si vous utilisez homebrew, référencez TOUJOURS les binaires liés dynamiquement dans /usr/local/bin, car ceux-ci seront toujours maintenus à jour.

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