Zmienna PATH jest zawsze resetowana. Jak to naprawić?

9

Jakiś czas temu dowiedziałem się, że mogę tworzyć własne terminale poleceń z rozszerzaniem zmiennej PATH. Niestety zawsze się resetuje, kiedy zamykam terminal i otwieram go ponownie.

Czy wiesz jak rozwiązać ten problem?

Ponieważ kiedy chcę uruchomić kilka skryptów za pomocą komend terminalowych, nie chcę za każdym razem rozszerzać zmiennej PATH ...

Jenne
źródło
1
Umieścić to w swoim .bashrc?
gniourf_gniourf
Jak to zrobić? Jestem nowy w Linuksie;)
Jenne
2
otwórz .bashrcplik w ten sposób: gedit ~/.bashrci umieść tam, co chcesz (na dole pliku jest lepiej), np. PATH="~/my/cool/path/:$PATH"i wyeksportuj tę zmienną: po wprowadzonej linii umieść, export PATHa następnie zapisz plik, a następnie zamknij terminal i otwórz ponownie to i teraz ~/my/cool/pathzostaną znalezione twoje pliki wykonywalne .
gniourf_gniourf
Napisałem to jako pełną odpowiedź dla ciebie ...:)
gniourf_gniourf
Możliwy duplikat Jak dodać katalog do ŚCIEŻKI?
David Foerster,

Odpowiedzi:

15

Rozumiem, że masz jakieś pliki wykonywalne w jednym z folderów domowych, np. Wewnątrz ~/bini chcesz móc je wykonywać bez wpisywania pełnej ścieżki ~/bin/my_cool_executable.

Już zauważyłeś, że wejście PATH=~/bin:$PATHdo terminala sprawiło, że wszystko działało ... ale tylko do momentu zamknięcia terminalu. Po otwarciu nowej poprzednia PATHzmienna zostaje przywrócona do pierwotnej wartości. Przy okazji, myślę, że wiesz, jak w każdej chwili sprawdzić wartość PATHzmiennej: tak:

echo "$PATH"

Jak sprawić, by zmiana była trwała, aby PATHpozostała taka sama po ponownym otwarciu nowego terminalu? To bardzo proste, wystarczy edytować .bashrcplik. Użyjmy geditedytora: w terminalu wpisz:

gedit ~/.bashrc

Otwiera to geditedytor. Przewiń do końca pliku i dodaj to:

# Added by me on 2013/06/24
PATH=~/bin:$PATH
export PATH

i zapisz plik i wyjdź gedit. Następnie zamknij terminal i otwórz nowy. Teraz twoja PATHzmienna powinna mieć ~/binprzed sobą, aby twoje komendy ~/binbyły dostępne bez wpisywania ich pełnej ścieżki. I wiesz, jak sprawdzić, że: echo "$PATH".

Cieszyć się!

Ostrzeżenie . Wprowadzanie zmiennej jest uważane za złą praktykę i lukę .w zabezpieczeniach PATH.

gniourf_gniourf
źródło
To było naprawdę miłe, ale teraz nie mogę uruchamiać programów, gdy jestem rootem. Czy wiesz, dlaczego i jak to naprawić? :)
Jenne
W takim przypadku jedną z opcji jest umieszczenie programów /usr/local/binzamiast manipulowania PATHzmienną ... lub w /usr/local/sbinprzypadku, gdy dostęp do nich ma tylko root.
gniourf_gniourf
Niektóre muszą być uruchamiane jako root, a niektóre nie. Byłoby więc miło, gdyby to nie miało znaczenia i mogłyby znajdować się w niestandardowym katalogu. Więc czy jest w stanie to zrobić? :)
Jenne