Używam ryb jako powłoki w Debianie, a ostatnio (po pewnym uaktualnieniu) za każdym razem, gdy próbuję użyć poleceń uzupełniających, mam:
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
Uruchamianie tego:
echo $PATH
Daje mi to:
/usr/lib/x86_64-linux-gnu/libfm /usr/local/bin /usr/bin /bin /usr/local/games /usr/games
W moim systemie nie ma /usr/lib/x86_64-linux-gnu/libfm
, więc rozumiem, dlaczego ryby narzekają, ale nie mogę znaleźć sposobu na usunięcie tej ścieżki z mojej $PATH
zmiennej.
Czy ktoś wie, jak to zrobić?
shell
path
environment-variables
fish
tomekK
źródło
źródło
grep -R /usr/lib/x86_64-linux-gnu/libfm ~/.config/fish /usr/share/fish
??Odpowiedzi:
„Rybim” sposobem ustawienia zmiennej $ PATH jest użycie
set --universal fish_user_paths $fish_user_paths /new/path/here
. Następnie $ fish_user_paths jest faktycznie dołączane do zmiennej $ PATH, gdy rozpoczyna się nowa sesja. Jednak dokumentacja $ PATH nie mówi, jak ją usunąć.W rybach każda zmienna jest w rzeczywistości listą (tablicą), a do każdego elementu można wygodnie uzyskać dostęp za pomocą indeksu / indeksu.
echo $fish_user_paths
będzie wydrukować spacjami wersję każdego elementu na liście, należy NEWLINE przestrzenie z funkcją przełożeniaecho $fish_user_paths | tr " " "\n"
, a następnie umieścić na niej numery linii z numerem funkcjonować linieecho $fish_user_paths | tr " " "\n" | nl
. Następnie usuń za pomocąset --erase --universal fish_user_paths[5]
. Musisz użyć,--universal
inaczej nie będzie działać w żadnych nowych sesjach.Jeśli ktoś ma czas, prześlij PR do repozytorium z tym przykładem. Otworzyłem tutaj problem .
tldr;
echo $fish_user_paths | tr " " "\n" | nl
// uzyskaj numer tego, który chcesz usunąć, np. piątyset --erase --universal fish_user_paths[5]
// uniwersalnie usuń 5. ścieżkę, aby pozostała w nowych sesjachźródło
Jak mówi Eliasz, najlepszą praktyką jest modyfikacja
fish_user_paths
raczej niż globalnejPATH
. Aby uniknąć konieczności ponownego korzystania z Google…fish_user_paths
Aby dodać do ścieżek użytkownika:
Aby usunąć ścieżkę użytkownika , jeśli istnieje (częściowe kredytowej do tego ):
I oczywiście, aby były ładowane automatycznie :
Przykładowe użycie:
źródło
To powinno skasować ścieżki 6 do ostatniej ścieżki:
Flaga -e jest usuwana. Zobaczyć
help set
.źródło