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?
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:
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
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.