Récemment (25 février 2020), lorsque j'ai mis à jour selon la demande de mise à jour d'Ubuntu, l'erreur suivante s'est produite lors du démarrage de Fish shell. Selon l'histoire d'apt, la coquille de poisson a été mise à jour.
L'erreur qui se produit
~/.config/fish/functions/fish_prompt.fish (line 162): Expected a string, but instead found a '&'
git rev-parse --quiet --verify HEAD > /dev/null ^&1; or set empty 1
^
from sourcing file ~/.config/fish/functions/fish_prompt.fish
in command substitution
source: Error while reading file '/home/dev-user/.config/fish/functions/fish_prompt.fish'
Welcome to fish, the friendly interactive shell
En plus de l'erreur, l'invite s'affiche également différemment, comme illustré ci-dessous.
dev-user@thinkpad /home/dev-user >
Dans mon environnement, il devrait s'afficher simplement comme ">" lorsque je suis dans $ HOME.
Ubuntu 18.04.4 LTS fish-common:amd64 (3.0.2-1~bionic, 3.1.0-1~bionic) fish:amd64 (3.0.2-1~bionic, 3.1.0-1~bionic)
J'ai installé nativement Ubuntu en tant que système d'exploitation de bureau sur ThinkPad X1C 2017. Le logiciel du terminal utilise le terminateur 1.91.
Probablement la cause ~/.config/fish/functions/fish_prompt.fish La 162ème ligne de est la suivante.
git rev-parse --quiet --verify HEAD > /dev/null ^&1; or set empty 1
La partie "^ & 1" est le problème. Dans fish, "^" semble indiquer une erreur de sortie (référence), donc j'imagine que j'ai fait une erreur en essayant de synthétiser le descripteur. Et changé comme suit.
git rev-parse --quiet --verify HEAD > /dev/null 2>&1; or set empty 1
Pour le moment, l'erreur a disparu.
Cette fois, la sortie d'erreur a été combinée avec la sortie standard, et le résultat a été passé à null pour masquer toutes les sorties. Lorsque j'ai changé le modèle pour que la sortie standard ne soit pas effacée, la commande git rev-parse ~~ est exécutée à chaque fois que le dossier est déplacé, et dans le répertoire sous gestion git qui a une différence avec HEAD, cela ressemble à une chaîne de hachage Est maintenant affiché. Puisqu'il est étrange qu'un tel affichage apparaisse à l'invite, j'ai imaginé que c'était l'intention de l'implémenteur de le cacher, y compris la sortie d'erreur, mais j'ai pris les mesures ci-dessus, mais je les utilise à mes propres risques ..
Recommended Posts