Environment variabelen in Linux
Op deze pagina:
In een Bash shell heb je de beschikking over environment variabelen (omgevingsvariabelen) die voor alle programma's en opdrachten beschikbaar zijn. Deze variabelen kunnen in configuratiebestanden zijn ingesteld, maar ze kunnen ook rechtstreeks in de shell worden ingesteld of aangepast.
De environment variabelen kunnen worden onderverdeeld in 3 typen: lokaal, gebruiker en systeem.
Lokale environment variabelen
Dit zijn variabelen die alleen in de huidige shell sessie bestaan. Ze staan niet in een configuratiebestand, maar worden in de sessie zelf aangemaakt. Deze variabelen worden ook doorgegeven aan kind-sessies, dus shell sessies die vanuit de huidige shell sessie worden gestart.
Gebruiker environment variabelen
Dit zijn variabelen die alleen gelden voor de ingelogde gebruiker. Deze variabelen staan in de configuratiebestanden in de home directory van die gebruiker. Het gaat om de volgende bestanden:
.bashrc (voor lokale inlog),
.bash_profile (voor inlog op afstand via ssh),
.bash_login (voor inlog op afstand via ssh) en
.profile (voor inlog op afstand via ssh).
Het zijn verborgen bestanden, de bestandsnamen beginnen met een punt.
Systeem environment variabelen
Dit zijn variabelen die voor alle gebruikers gelden, ze worden geladen vanuit de volgende configuratiebestanden:
/etc/environment (voor elke gebruiker, zowel lokaal als via ssh),
/etc/profile (voor elke inlog via ssh),
/etc/profile.d/ (voor elke inlog via ssh) en
/etc/bash.bashrc (voor elke lokale gebruiker).
Alle environment variabelen zien
Om alle huidige environment variabelen met hun waarden te zien kun je het volgende intypen: env.
Alle huidige omgevingsvariabelen laten zien kan ook met printenv.
Aanpassen van lokale environment variabelen
Een lokale environment variabele kun je als volgt aanpassen:
var=waarde
of:
export var=waarde
Let op: er mag geen spatie staan tussen de naam van de variabele en het is gelijk teken. Er mag ook geen spatie staan tussen het is gelijk teken en de waarde van de variabele.
De namen van variabelen zijn hoofdlettergevoelig: MIJNVAR is een andere variabele als mijnvar.
Meestal worden voor de namen van omgevingsvariabelen hoofdletters gebruikt.
Als een variabele meerdere waarden bevat, dan moeten deze worden gescheiden door dubbele punten.
Waarden die spaties bevatten moet je tussen aanhalingstekens plaatsen.
Voorbeeld:
$ ECHTWAAR='Linux is geweldig!'
$ echo $ECHTWAAR
# resultaat:
Linux is geweldig!
Je kunt een de waarde van een variabele ook weergeven met printenv, je kunt dan het dollarteken weglaten:
$ ECHTWAAR='Linux is geweldig!'
$ printenv ECHTWAAR
# resultaat:
Linux is geweldig!
Je kunt een variabele ook weer verwijderen met unset:
unset var
Je kunt een variabele ook leegmaken door een lege tekst toe te wijzen:
var=''
Om een variabele die in een configuratiebestand staat permanent te verwijderen, moet je deze uit het configuratiebestand weghalen.
Je kunt ook een shell openen zonder environment variabelen:
env –i bash
Zodra deze shell weer gesloten wordt zijn de environment variabelen weer terug.
Aanpassen van gebruiker en systeem environment variabelen
Het aanpassen of maken van gebruiker en systeem environment variabelen moet via de configuratie bestanden.Bij het aanmaken van een variabele geef je deze een naam, bij het gebruik ervan zet je een dollarteken voor de naam.
Om een variabele toe te voegen, gebruik je export in het configuratie bestand:
export MIJNVAR=mijnwaarde
Het toevoegen van een environment variabele kan ook via de shell met slechts één regel:
echo 'MIJNVAR=mijnwaarde' >> ~/.bashrc
Om de aanpassing in werking te laten treden, moet je het aangepaste configuratie bestand 'sourcen':
source .bashrc
echo $MIJNVAR
# resultaat:
mijnwaarde
In het configuratiebestand /etc/environment mag je geen export gebruiken, hier gebruik je:
MIJNVAR=mijnwaarde
$PATH aanpassen
Als je een map in je home directory hebt met scripts. bijvoorbeeld 'mijnscripts' en je wilt dat die vanuit elke map waar je een shell opent beschikbaar is, dan kun je de $PATH variabele uitbreiden met deze map, door de volgende regel toe te voegen in .bashrc:
export PATH=$PATH:~/mijnscripts
Hierbij is het belangrijk dat je PATH uitbreid en niet vervangt, anders zijn de programma's in de oorspronkelijke PATH niet meer te vinden.
De dubbele punt wordt hier gebruikt omdat de variabele PATH uit meerdere waarden bestaat. De dubbele punt is de scheiding tussen de waarden.
$SHELL
De omgevingsvariabele $SHELL bevat het pad naar je shell, als je bash gebruikt is dat:
echo $SHELL
# resultaat:
/bin/bash
$HOME
De omgevingsvariabele $HOME bevat het pad naar je home directory, als je kees heet, dan is dat:
echo $HOME
# resultaat:
/home/kees
Je kunt zo'n omgevingsvariabele bijvoorbeeld gebruiken in een opdracht:
touch $HOME/nieuwbestand.txt
ls $HOME/nieuwbestand.txt
# resultaat:
/home/kees/nieuwbestand.txt
$USER
De omgevingsvariabele $USER geeft je gebruikersnaam.