web-dev-qa-db-fra.com

Erreur: "La valeur de la variable Shell n'a pas été trouvée dans le fichier / etc / shells" lors de l'exécution de `pkexec`

Sur Ubuntu 14.04, j'obtiens le message d'erreur "La valeur de la variable Shell n'a pas été trouvée dans le fichier/etc/shells" lors de l'exécution de pkexec pour exécuter un script.

Très probablement, cette erreur a commencé après que j'ai retiré le poisson Shell, défini comme mon shell par défaut.

Le contenu de /etc/shells est:

#/etc/shells: shells de connexion valides
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

Comment puis-je résoudre ce problème?

2
J. Doe

Le problème est le suivant: pkexec est en train d'accéder à $Shell pour déterminer le shell à utiliser pour évaluer le reste de la commande; Puisque vous avez désinstallé Fish, mais que vous n'avez rien fait d'autre, $Shell contient toujours /usr/bin/fish, mais pkexec ne considère pas /usr/bin/fish comme un shell valide, car /usr/bin/fish a été supprimé de /etc/shells.

Vous devez faire ces deux choses:

  1. Définissez un nouveau shell pour votre utilisateur, de sorte que le prochain chargement de l'environnement $Shell contiendra un chemin d'accès à un shell valide. Par exemple. pour définir Bash en tant que nouveau shell pour votre utilisateur (remplacez user par le nom d'utilisateur de votre utilisateur):

    Sudo chsh -s /bin/bash user
    
  2. Déconnectez-vous/connectez-vous pour recharger l'environnement de sorte que $Shell contienne le chemin d'accès au nouveau shell pour votre utilisateur.

4
kos