Gentoo Logo

1.  Omgevingsvariabelen?

Wat zijn dat

Een omgevingsvariabele is een ding dat een naam heeft en informatie bevat die wordt gebruikt door één of meer toepassingen. Veel gebruikers (met name degenen die nieuw zijn binnen Linux) vinden dit vreemd en onhandig. Niets is minder echter waar: door omgevingsvariabelen te gebruiken kunt u eenvoudig de instellingen voor één of meer toepassingen veranderen.

Belangrijke voorbeelden

De onderstaande tabel laat enkele variabelen zien die een Linux systeem gebruikt en geeft daar een korte uitleg bij. Voorbeelden van bruikbare waarden zullen na de tabel worden gegeven.

Variabele Beschrijving
PATH Deze variabele bestaat uit een lijst van mappen waarin een systeem zoekt naar programma's. Wanneer u de naam van een programma in typt (zoals ls, rc-update of emerge) en het programma staat niet in de lijst, zal het programma niet worden uitgevoerd. Tenzij u natuurlijk de volledig naam van de map en het programma opgeeft (zoals /bin/ls).
ROOTPATH Deze variabele doet hetzelfde als PATH, maar dan voor mappen die worden doorzocht wanneer de root een commando intypt.
LDPATH Deze variabele bevat de mappen waar wordt gezocht naar bibliotheken, door de zogenaamde dynamische linker.
MANPATH Deze variabele bevat een lijst met mappen waar het commando man zoekt naar handleidingen.
INFODIR Deze variabele bevat een lijst met mappen waar het commando info zoekt naar info pagina's.
PAGER Deze variabele bevat de verwijzing naar een programma dat de inhoud van bestanden kan weergeven (zoals less of more).
EDITOR Deze variabele bevat de verwijzing naar uw (favoriete) editor (zoals nano of vi).
KDEDIRS Deze variabele bevat een lijst met mappen die door KDE worden gebruikt.
CLASSPATH Deze variabele bevat een lijst met mappen waarin Java classes zijn opgeslagen.
CONFIG_PROTECT Deze variabele bevat een lijst met mappen die beveiligd worden door Portage tijdens updates (let op, spaties in plaats van dubbele punten).
CONFIG_PROTECT_MASK Deze variabele bevat een lijst met mappen die niet beveiligd worden door Portage tijden updates (let op, spaties in plaats van dubbele punten).

Hieronder worden enkele voorbeelden gegeven voor deze variabelen:

Codevoorbeeld 1.1: Voorbeelden

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"

1.  Variabelen globaal definiëren

De map /etc/env.d

Om de definities bij elkaar te kunnen houden, heeft Gentoo de map /etc/env.d. In deze map bevinden zich een aantal bestanden, waaronder bijvoorbeeld 00basic en 05gcc, waarin de variabelen voor de toepassing waar ze naar vernoemd zijn worden ingesteld.

Toen u gcc hebt geïnstalleerd is bijvoorbeeld het bestand 05gcc aangemaakt door de ebuild, met daarin de volgende variabelen:

Codevoorbeeld 1.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Andere distributies hebben deze variabelen bijvoorbeeld in /etc/profile. Gentoo maakt het eenvoudiger voor u (en voor Portage) door zelf de omgevingsvariabelen bij te houden, zonder dat u de verschillende bestanden moet aanpassen waarin omgevingsvariabelen kunnen staan.

Wanneer u gcc update wordt het bestand/etc/env.d/05gcc automatisch ge-update, zonder dat u iets hoeft te doen.

Dit is niet alleen een voordeel voor Portage, maar ook voor uzelf. Toch moet u soms zelf een omgevingsvariabele invoeren. Als voorbeeld nemen we hier de variabele http_proxy. Deze kunt u eenvoudig definiëren door een bestand /etc/env.d/99local aan te maken met de variabele daarin:

Codevoorbeeld 1.1: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Wanneer u alle variabelen toevoegt in hetzelfde bestand zet, hebt u een goed overzicht van de variabelen die u zelf instelt.

Het env-update Script

De verschillende bestanden in /etc/env.d definieren samen de variabelePATH: op deze manier kunt u door env-update te draaien de verschillende definities toevoegen, waardoor het eenvoudiger is voor pakketten (en gebruikers) om hun eigen variabelen toe te voegen, zonder daarbij met de reeds bestaande waarden aan te hoeven passen.

Het env-update script voegt de waarden in alfabetische volgorde toe. De bestandsnamen moeten daarom beginnen met twee getallen.

Codevoorbeeld 1.1: Volgorde om toe te voegen door env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Niet alle variabelen worden op de bovenstaande manier samengevoegd. Dit geldt alleen voor: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH en PRELINK_PATH_MASK. Voor de rest van de variabelen wordt de laatst gedefinieerde waarde gebruikt die in /etc/env.d is gedefinieerd (op alfabetische volgorde).

Wanneer u env-update draait, worden alle omgevingsvariabelen aangemaakt en in het bestand /etc/profile.env geplaatst (wat dan gebruikt wordt door /etc/profile). Het bestand /etc/ld.so.conf wordt aangemaakt met de informatie uit LDPATH. Daarna wordt ldconfig gedraaid om /etc/ld.so.cache overnieuw aan te maken, voor gebruik door de dynamische linker.

Wanneer u direct gebruik wilt maken van de omgevingsvariabelen die door env-update zijn toegevoegd, moet u het onderstaande commando uitvoeren. Indien u Gentoo zelf hebt geïnstalleerd, herinnert u zich dit waarschijnlijk nog wel uit de installatie instructies:

Codevoorbeeld 1.1: De omgevingsvariabelen updaten

# env-update && source /etc/profile

Nota: Het bovenstaande commando werkt alleen voor de variabelen in uw huidige terminal en voor nieuwe consoles. Dus wanneer u X11 draait, moet u in elke nieuwe terminal source /etc/profile draaien of X herstarten. Wanneer u een login manager gebruikt kunt u /etc/init.d/xdm restart draaien als root. Als u dit niet doet, moet u uitloggen en overnieuw inloggen om de nieuwe variabelen te kunnen gebruiken.

1.  Variabelen lokaal definiëren

User Specific

Soms wilt u een omgevingsvariabele niet globaal definiëren. U kunt bijvoorbeeld de map /home/my_user/bin en de map waarin u werkt aan de variabele PATH willen toevoegen, zonder dat alle andere gebruikers deze mappen in hun PATH hebben staan. Dit kan door een variabele lokaal te definiëren in ~/.bashrc of ~/.bash_profile:

Codevoorbeeld 1.1: PATH lokaal uitbreiden via ~/.bashrc

(Een dubbele punt zonder een map erachter wordt gezien als de huidige map)
PATH="${PATH}:/home/my_user/bin:"

Zodra u overnieuw inlogt wordt uw PATH variabele bijgewerkt.

Per sessie

Soms wilt u een omgevingsvariabele helemaal niet permanent gebruiken. U kunt bijvoorbeeld een tijdelijke map hebben, waarvoor u de niet steeds de hele map wilt intypen en niet ~/.bashrc wilt aanpassen, omdat u de verwijzing maar tijdelijk nodig heeft.

In zo'n geval kunt u de variabele PATH in de huidige sessie aanpassen met het commando export. De variabele blijft dan actief totdat u uitlogt.

Codevoorbeeld 1.1: Een omgevingsvariabele definieren voor één sessie

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

Upgedate op 28 september 2005

De originele versie van dit document was laatst geupdate om 29 juni 2012

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.