J'utilise fish comme shell dans Debian et récemment (après une mise à niveau) chaque fois que j'essaie d'utiliser la complétion de commande, j'ai:
set: No such file or directory
set: Could not add component /usr/lib/x86_64-linux-gnu/libfm to PATH.
set: No such file or directory
Exécuter ceci:
echo $PATH
Me donne ceci:
/usr/lib/x86_64-linux-gnu/libfm /usr/local/bin /usr/bin /bin /usr/local/games /usr/games
Dans mon système, il n'y a pas /usr/lib/x86_64-linux-gnu/libfm
, donc je comprends pourquoi le poisson se plaint, mais je ne trouve pas comment supprimer ce chemin de ma $PATH
variable.
Est-ce que quelqu'un sait comment faire cela?
shell
path
environment-variables
fish
tomekK
la source
la source
grep -R /usr/lib/x86_64-linux-gnu/libfm ~/.config/fish /usr/share/fish
??Réponses:
La manière «poisson» de définir la variable $ PATH est d'utiliser réellement
set --universal fish_user_paths $fish_user_paths /new/path/here
. Ensuite, $ fish_user_paths est en fait ajouté à la variable $ PATH lorsqu'une nouvelle session démarre. La documentation de $ PATH ne vous indique cependant pas comment le supprimer.Dans le poisson, chaque variable est en fait une liste (tableau), et vous pouvez accéder facilement à chaque élément directement en utilisant un index / indice.
echo $fish_user_paths
imprimera un espace délimité par la version de chaque élément dans la liste, font les espaces Newline avec la fonction traduireecho $fish_user_paths | tr " " "\n"
et mettre des chiffres en ligne sur avec le nombre de lignes fonctionnent,echo $fish_user_paths | tr " " "\n" | nl
. Supprimez-le ensuite avecset --erase --universal fish_user_paths[5]
. Vous devez utiliser--universal
ou il ne fonctionnera pas dans de nouvelles sessions.Si quelqu'un a le temps, veuillez soumettre un PR au repo avec cet exemple. J'ai ouvert un problème ici .
tldr;
echo $fish_user_paths | tr " " "\n" | nl
// récupère le numéro de celui que vous voulez supprimer, par exemple le 5eset --erase --universal fish_user_paths[5]
// efface le 5ème chemin universellement pour qu'il persiste dans les nouvelles sessionsla source
Comme le dit Elijah, la meilleure pratique consiste à modifier le
fish_user_paths
plutôt que le globalPATH
. Pour éviter d'avoir à refaire ça sur Google…fish_user_paths
Pour ajouter aux chemins utilisateur:
Pour supprimer un chemin utilisateur s'il existe (crédit partiel à cela ):
Et bien sûr, pour les rendre à chargement automatique :
Exemple d'utilisation:
la source
Cela devrait effacer les chemins 6 à travers le dernier chemin:
Le drapeau -e est effacé. Tu vois
help set
.la source