Bash
Zarządzanie zmienną środowiskową PATH
Szukaj…
Składnia
- Dodaj ścieżkę: PATH = $ PATH: / new / path
- Dodaj ścieżkę: PATH = / new / path: $ PATH
Parametry
Parametr | Detale |
---|---|
ŚCIEŻKA | Zmienna środowiskowa ścieżki |
Uwagi
Plik konfiguracyjny Bash:
Ten plik jest pobierany przy każdym uruchomieniu nowej interaktywnej powłoki Bash.
W systemach GNU / Linux jest to zazwyczaj plik ~ / .bashrc; w systemie Mac to ~ / .bash_profile lub ~ / .profile
Eksport:
Zmienna PATH musi zostać wyeksportowana jeden raz (domyślnie jest to zrobione). Po wyeksportowaniu pozostanie on wyeksportowany, a wszelkie wprowadzone w nim zmiany zostaną zastosowane natychmiast.
Zatwierdź zmiany:
Aby zastosować zmiany w pliku konfiguracyjnym Bash, musisz ponownie załadować ten plik do terminala (plik source /path/to/bash_config_file
)
Dodaj ścieżkę do zmiennej środowiskowej PATH
Zmienna środowiskowa PATH jest ogólnie definiowana w ~ / .bashrc lub ~ / .bash_profile lub / etc / profile lub ~ / .profile lub /etc/bash.bashrc (plik konfiguracyjny Bash specyficzny dla dystrybucji)
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/jdk1.8.0_92/bin:/usr/lib/jvm/jdk1.8.0_92/db/bin:/usr/lib/jvm/jdk1.8.0_92/jre/bin
Teraz, jeśli chcemy dodać ścieżkę (np. ~/bin
) do zmiennej PATH:
PATH=~/bin:$PATH
# or
PATH=$PATH:~/bin
Ale to zmodyfikuje PATH tylko w bieżącej powłoce (i jej podpowłoce). Po wyjściu z powłoki ta modyfikacja zniknie.
Aby było trwałe, musimy dodać ten fragment kodu do pliku ~ / .bashrc (lub cokolwiek innego) i ponownie załadować plik.
Jeśli uruchomisz następujący kod (w terminalu), doda on ~/bin
do PATH na stałe:
echo 'PATH=~/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
Wyjaśnienie:
-
echo 'PATH=~/bin:$PATH' >> ~/.bashrc
dodaje wierszPATH=~/bin:$PATH
na końcu pliku ~ / .bashrc (można to zrobić za pomocą edytora tekstu) -
source ~/.bashrc
ładuje plik ~ / .bashrc
To jest trochę kodu (uruchamianego w terminalu), który sprawdzi, czy ścieżka jest już uwzględniona i doda ją tylko, jeśli nie:
path=~/bin # path to be included
bashrc=~/.bashrc # bash file to be written and reloaded
# run the following code unmodified
echo $PATH | grep -q "\(^\|:\)$path\(:\|/\{0,1\}$\)" || echo "PATH=\$PATH:$path" >> "$bashrc"; source "$bashrc"
Usuń ścieżkę ze zmiennej środowiskowej PATH
Aby usunąć PATH ze zmiennej środowiskowej PATH, musisz edytować ~ / .bashrc lub ~ / .bash_profile lub / etc / profile lub ~ / .profile lub /etc/bash.bashrc (specyficzny dla dystrybucji) i usunąć przypisanie dla ta konkretna ścieżka.
Zamiast znaleźć dokładne przypisanie, możesz po prostu dokonać zamiany w $PATH
w jej ostatnim etapie.
Następujące czynności bezpiecznie usuną $path
$PATH
z $PATH
:
path=~/bin
PATH="$(echo "$PATH" |sed -e "s#\(^\|:\)$(echo "$path" |sed -e 's/[^^]/[&]/g' -e 's/\^/\\^/g')\(:\|/\{0,1\}$\)#\1\2#" -e 's#:\+#:#g' -e 's#^:\|:$##g')"
Aby było trwałe, musisz dodać go na końcu pliku konfiguracyjnego bash.
Możesz to zrobić w funkcjonalny sposób:
rpath(){
for path in "$@";do
PATH="$(echo "$PATH" |sed -e "s#\(^\|:\)$(echo "$path" |sed -e 's/[^^]/[&]/g' -e 's/\^/\\^/g')\(:\|/\{0,1\}$\)#\1\2#" -e 's#:\+#:#g' -e 's#^:\|:$##g')"
done
echo "$PATH"
}
PATH="$(rpath ~/bin /usr/local/sbin /usr/local/bin)"
PATH="$(rpath /usr/games)"
# etc ...
Ułatwi to obsługę wielu ścieżek.
Uwagi:
- Musisz dodać te kody w pliku konfiguracyjnym Bash (~ / .bashrc lub cokolwiek innego).
- Uruchom
source ~/.bashrc
aby ponownie załadować plik konfiguracji Bash (~ / .bashrc).