Jak mogę zresetować $ PATH do domyślnej wartości w Ubuntu?

31

Przez przypadek usunąłem wszystkie katalogi $PATHpodczas próby dodania nowego ~/.bashrc. Otworzyłem nowe okno terminala podczas edytowania i teraz $PATHjest puste. Martwię się, jeśli uruchomię z innego dysku, aby znaleźć, $PATHże nie będę mógł ponownie uruchomić się na tym dysku.

Zasadniczo jaki jest domyślny wynik echo $PATH?

Cee
źródło
1
Skomentuj lub napraw tę linię eksportu i powinieneś już iść.
Panther
~/.bashrcjest złym miejscem do ustawienia zmiennych środowiskowych. Zamiast tego powinieneś to zrobić ~/.profile.
geirha
Tak, wymyśliłem to. PATH jest nadal w porządku w drugim oknie terminala, które było otwarte przed nowym, więc po prostu naprawienie linii eksportu przez dodanie :$PATHna końcu przywróciło PATH. I tak, ~/.profilejest kod do „ustawiania ŚCIEŻKI, aby zawierał prywatny kosz użytkownika, jeśli istnieje”, tj.$HOME/bin
Cee

Odpowiedzi:

35

Odpowiedź na twoje pytanie brzmi:

PATH=$(getconf PATH)

i działa na każdym systemie zgodnym z POSIX. Wybrana odpowiedź jest poprawnym sposobem na rozszerzenie ścieżki bez zatarcia wcześniejszej istniejącej treści. Jeśli używasz bash, możesz rozważyć:

PATH+=:$mynewdir
Bruce
źródło
Miałem problem z używaniem wielu poleceń ( sed: No such file or directoryrodzaj problemu) po przypadkowym ustawieniu mojej PATH na nic podczas bardzo długiego procesu (tj. Nie mogłem zrestartować). Nie mogłem użyć getconf. Użyłem do zresetowania mojej ścieżki $(export $(cat /etc/environment)":/usr/bin/additional:/usr/bin/paths"). Dla ciekawych: /etc/environmentgdzie zmienna PATH jest początkowo ustawiona w wielu odmianach systemu Linux.
Nick Bull
2
Ta praca mnie zaskoczyłaby. Być może „eksport” bez otaczających elementów „$ (...)” może, ale tak się stanie. Użyj „source / etc / ..”. W każdym razie spróbuj „/ usr / bin / getconf”, jeśli nie możesz nawet znaleźć „getconf”.
Bruce
Wolę swój ostateczny pomysł, korzystając z pełnej ścieżki o wiele bardziej niż mój z perspektywy czasu! Dzięki za odpowiedź
Nick Bull
1
Jeśli zmienna PATH jest pusta, to PATH=$(getconf PATH)nie będzie przydatna, ale spowoduje tylkobash: getconf: No such file or directory
Max N
1
Jeśli ŚCIEŻKA jest pusta, zwróć uwagę na powyższy komentarz: spróbuj „/ usr / bin / getconf”. Jeśli to nie zadziała, musisz dowiedzieć się, gdzie system ukrywa swoje polecenia POSIX i korzystać z tego katalogu.
Bruce
17

Możesz go znaleźć w / etc / environment:

$ /usr/bin/cat /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Więc po prostu to źródło:

$ source /etc/environment 
$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Manuel Jesus Rodriguez
źródło
1
kot nie będzie działał w taki sposób jak w twojej odpowiedzi, ponieważ nie ma ŚCIEŻKI $
Josef Klimuk
Masz rację. Właśnie zmodyfikowałem odpowiedź. Dziękuję Ci!
Manuel Jesus Rodriguez
8

Dodanie: $ PATH na końcu linii eksportu naprawiło problem np export PATH=<directory to be added>:$PATH

Dodaję ten wiersz do ~/.bash_rcpliku zamiast do ~/.profilepliku, dzięki czemu mogę natychmiast zobaczyć efekt w nowym terminalu iz innych powodów w oparciu o informacje tutaj: https://superuser.com/questions/176404/linux-bash-not- ładowanie profilu w nowej sesji

Dla mnie domyślnym wyjściem echo $PATHprzed dodaniem nowego katalogu jest:

/ usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games

Cee
źródło
3

Domyślna ścieżka to

/home/_username_/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 

Mam nadzieję, że to ci pomoże

Vibhav Pant
źródło
To różni się od mojej domyślnej ŚCIEŻKI. Patrz poniżej.
Cee