Bash
PATH-omgevingsvariabele beheren
Zoeken…
Syntaxis
- Pad toevoegen: PATH = $ PATH: / nieuw / pad
- Pad toevoegen: PATH = / nieuw / pad: $ PATH
parameters
Parameter | Details |
---|---|
PAD | Padomgevingsvariabele |
Opmerkingen
Bash-configuratiebestand:
Dit bestand is afkomstig wanneer een nieuwe interactieve Bash-shell wordt gestart.
In GNU / Linux-systemen is dit meestal het bestand ~ / .bashrc; in Mac is het ~ / .bash_profile of ~ / .profile
Exporteren:
De variabele PATH moet eenmaal worden geëxporteerd (dit wordt standaard gedaan). Als het eenmaal is geëxporteerd, blijft het geëxporteerd en worden alle aangebrachte wijzigingen onmiddellijk toegepast.
Pas wijzigingen toe:
Om wijzigingen toe te passen op een Bash-configuratiebestand, moet u dat bestand opnieuw laden in een terminal ( source /path/to/bash_config_file
)
Voeg een pad toe aan de omgevingsvariabele PATH
De omgevingsvariabele PATH wordt meestal gedefinieerd in ~ / .bashrc of ~ / .bash_profile of / etc / profile of ~ / .profile of /etc/bash.bashrc (distro-specifiek Bash-configuratiebestand)
$ 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
Als we nu een pad (bijvoorbeeld ~/bin
) aan de variabele PATH willen toevoegen:
PATH=~/bin:$PATH
# or
PATH=$PATH:~/bin
Maar dit zal de PATH alleen wijzigen in de huidige shell (en de bijbehorende subshell). Zodra u de shell verlaat, is deze wijziging verdwenen.
Om het permanent te maken, moeten we dat stukje code toevoegen aan het bestand ~ / .bashrc (of wat dan ook) en het bestand opnieuw laden.
Als u de volgende code uitvoert (in terminal), wordt ~/bin
permanent aan het PATH toegevoegd:
echo 'PATH=~/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
Uitleg:
-
echo 'PATH=~/bin:$PATH' >> ~/.bashrc
voegt de regelPATH=~/bin:$PATH
aan het einde van het ~ / .bashrc bestand (je zou het kunnen doen met een teksteditor) -
source ~/.bashrc
herlaadt het ~ / .bashrc bestand
Dit is een stukje code (uitgevoerd in terminal) die controleert of een pad al is opgenomen en alleen het pad toevoegt als dit niet het geval is:
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"
Verwijder een pad uit de omgevingsvariabele PATH
Als u een PATH uit een omgevingsvariabele PATH wilt verwijderen, moet u ~ / .bashrc of ~ / .bash_profile of / etc / profile of ~ / .profile of /etc/bash.bashrc (distro-specifiek) bestand bewerken en de opdracht verwijderen voor dat specifieke pad.
In plaats van de exacte toewijzing te vinden, kunt u in de laatste fase gewoon een vervanging doen in het $PATH
.
Het volgende zal $path
veilig verwijderen uit $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')"
Om het permanent te maken, moet u het toevoegen aan het einde van uw bash-configuratiebestand.
Je kunt het op een functionele manier doen:
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 ...
Dit maakt het eenvoudiger om meerdere paden te verwerken.
Opmerkingen:
- U moet deze codes toevoegen in het Bash-configuratiebestand (~ / .bashrc of wat dan ook).
- Voer
source ~/.bashrc
uit om het Bash-configuratiebestand (~ / .bashrc) opnieuw te laden.