Bash
Hantera PATH-miljövariabel
Sök…
Syntax
- Lägg till sökväg: PATH = $ PATH: / new / path
- Lägg till sökväg: PATH = / new / path: $ PATH
parametrar
Parameter | detaljer |
---|---|
VÄG | Stegmiljövariabel |
Anmärkningar
Bash-konfigurationsfil:
Denna fil kommer från varje gång ett nytt interaktivt Bash-skal startas.
I GNU / Linux-system är det i allmänhet ~ / .bashrc-filen; i Mac är det ~ / .bash_profile eller ~ / .profile
Exportera:
PATH-variabeln måste exporteras en gång (det görs som standard). När den har exporterats kommer den att förbli exporterad och alla ändringar som görs på den kommer att tillämpas omedelbart.
Applicera förändringar:
För att tillämpa ändringar i en Bash-konfigurationsfil måste du ladda om den filen i en terminal ( source /path/to/bash_config_file
)
Lägg till en sökväg till PATH-miljövariabeln
Miljövariabeln PATH definieras vanligtvis i ~ / .bashrc eller ~ / .bash_profile eller / etc / profile eller ~ / .profile eller /etc/bash.bashrc (distro-specifik Bash-konfigurationsfil)
$ 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
Om vi nu vill lägga till en sökväg (t.ex. ~/bin
) till variabeln PATH:
PATH=~/bin:$PATH
# or
PATH=$PATH:~/bin
Men detta kommer att ändra PATH endast i det nuvarande skalet (och dess underskal). När du har lämnat skalet kommer denna ändring att försvinna.
För att göra den permanent måste vi lägga till den biten kod i filen ~ / .bashrc (eller vad som helst) och ladda om filen igen.
Om du kör följande kod (i terminal) lägger den ~/bin
till PATH permanent:
echo 'PATH=~/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
Förklaring:
-
echo 'PATH=~/bin:$PATH' >> ~/.bashrc
lägger till radenPATH=~/bin:$PATH
i slutet av ~ / .bashrc-filen (du kan göra det med en textredigerare) -
source ~/.bashrc
laddar om ~ / .bashrc-filen
Detta är en bit kod (kör i terminal) som kommer att kontrollera om en sökväg redan är inkluderad och lägga till sökvägen endast om inte:
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"
Ta bort en sökväg från PATH-miljövariabeln
För att ta bort en PATH från en PATH-miljövariabel, måste du redigera ~ / .bashrc eller ~ / .bash_profile eller / etc / profile eller ~ / .profile eller /etc/bash.bashrc (distro-specifik) fil och ta bort uppdraget för den specifika vägen.
Istället för att hitta den exakta uppgiften, kan du bara göra en ersättning i $PATH
i sitt sista skede.
Följande tar bort $path
från $PATH
säkert:
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')"
För att göra det permanent måste du lägga till det i slutet av din bash-konfigurationsfil.
Du kan göra det på ett funktionellt sätt:
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 ...
Detta gör det lättare att hantera flera vägar.
Anmärkningar:
- Du måste lägga till dessa koder i konfigurationsfilen för Bash (~ / .bashrc eller vad som helst).
- Kör
source ~/.bashrc
att ladda Bash-konfigurationsfilen (~ / .bashrc).