Ich verwende Fisch als meine Shell in Debian und habe vor kurzem (nach einigen Upgrades) immer dann, wenn ich versuche, die Befehlsvervollständigung zu verwenden:
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
Laufen diese:
echo $PATH
Gibt mir das:
/usr/lib/x86_64-linux-gnu/libfm /usr/local/bin /usr/bin /bin /usr/local/games /usr/games
In meinem System gibt es keine /usr/lib/x86_64-linux-gnu/libfm
, daher verstehe ich, warum sich Fische beschweren, aber ich kann nicht herausfinden, wie ich diesen Pfad aus meiner $PATH
Variablen entfernen kann.
Weiß jemand, wie ich das machen kann?
shell
path
environment-variables
fish
tomekK
quelle
quelle
grep -R /usr/lib/x86_64-linux-gnu/libfm ~/.config/fish /usr/share/fish
??Antworten:
Die 'Fisch'-Methode zum Setzen der $ PATH-Variablen ist die tatsächliche Verwendung
set --universal fish_user_paths $fish_user_paths /new/path/here
. Dann wird $ fish_user_paths tatsächlich der $ PATH-Variablen vorangestellt, wenn eine neue Sitzung beginnt. In der $ PATH- Dokumentation wird derzeit jedoch nicht beschrieben, wie Sie sie löschen können.In fish ist jede Variable eine Liste (Array), und Sie können bequem über einen Index / Index direkt auf jedes Element zugreifen.
echo $fish_user_paths
druckt eine durch Leerzeichen getrennte Version jedes Elements in der Liste aus, setzt die Leerzeichen mit der Funktion "Übersetzen" in eine neueecho $fish_user_paths | tr " " "\n"
Zeile und setzt dann mit der Funktion " Zeilenanzahl" Zeilennummern daraufecho $fish_user_paths | tr " " "\n" | nl
. Dann löschen Sie es mitset --erase --universal fish_user_paths[5]
. Sie müssen verwenden,--universal
oder es funktioniert nicht in neuen Sitzungen.Wenn jemand die Zeit hat, senden Sie bitte eine PR an das Repo mit diesem Beispiel. Ich habe hier eine Ausgabe eröffnet .
tldr;
echo $fish_user_paths | tr " " "\n" | nl
// erhalte die Nummer des zu löschenden, zB die fünfteset --erase --universal fish_user_paths[5]
// Den 5. Pfad universell löschen, damit er in neuen Sitzungen erhalten bleibtquelle
Wie Elijah sagt, besteht die beste Praxis darin,
fish_user_paths
eher das als das Globale zu modifizierenPATH
. Damit Sie das nicht noch einmal googeln müssen ...fish_user_paths
So fügen Sie Benutzerpfade hinzu:
So entfernen Sie einen Benutzerpfad, falls vorhanden (teilweise Gutschrift dafür ):
Und natürlich, damit sie automatisch geladen werden :
Beispiel Verwendung:
quelle
Dies sollte die Pfade 6 durch den letzten Pfad löschen:
Das Flag -e wird gelöscht. Sehen
help set
.quelle