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?


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

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

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


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


To różni się od mojej domyślnej ŚCIEŻKI. Patrz poniżej.
Cee
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.