Alle Unix prosesser inneholder et "miljø". Dette er en liste med variabler som inneholder navn og verdi, begge bare strenger som kan inneholde de fleste tegn. Alle Unix prosesser har en foreldre prosess - prosessen som laget denne prosessen som barn. Barne prosesser arver miljøet fra foreldre prosessene. De kan gjør noen modifikasjoner i miljøet før de sender det videre til sine barne prosesser.
En viktig miljø variabel er PATH, en liste med kataloger oppdelt med kolon (':'). Disse katalogene blir gjennomsøkt for å finne kommandoer. Hvis du prøver å påkalle kommandoen 'foo', vil alle katalogene i PATH (i den rekkefølgen) bli gjennomsøkt for å finne den kjørbare filen 'foo' (en med x-bitet på). Hvis en fil blir funnet blir den eksekvert.
I denne howto'en, bruker jeg utrykket 'kommando' til å referere til kjørbare program som er ment å bli påkalt med korte navn, ved bruk av path mekanismen.
I Linux, vil til og med lavnivå operativsystem kall for å starte prosesser ( den kjørbare familien av kall) søke gjennom kataloger i PATH variabelen: du kan bruke path mekanismen hvor som helst du prøver å eksekvere en kommando. Hvis kjørbare operativsystem kall får et filnavn som ikke inneholder '/', evaluerer det PATH miljø variabelen. Til og med hvis det ikke er noen variabel PATH i miljøet, er i det minste katalogene /bin og /usr/bin søkt for passende kommandoer.
I sh bruker du export kommandoen til å sette miljøet, i csh bruker du setenv kommandoen. For eksempel:
sh:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:.
csh:
setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:.
C-programmer kan bruke () biblioteks kall for å endre miljøet. Perl har miljø i en assosiativ tabell %ENV, du kan sette PATH som $ENV{PATH}="/bin".
env kommandoen er den grunnleggende måten å spørre etter de nåværende miljø variablene. Den kan bli brukt til modifisering også.
Mer informasjon om den grunnleggende miljø mekanismen kan bli funnet i manual sidene 'environ', 'execl', 'setenv', informasjonsfilen 'env' og dokumentasjonen om skall (shell).
Når Linux booter, er den første normale prosessen som starter init prosessen. Det er en spesiell prosess siden den ikke har noen foreldre. Imidlertid, så er den forfaren til alle andre prosesser. Init miljøet vil forbli som miljø for alle prosessene hvis de ikke rører det eksplisitt. De fleste prosesser berører det.
Init starter en gruppe prosesser. Filen /etc/inittab forteller hvilke prosesser systemet starter. Disse prosessene jobber i det miljøet som er direkte arvet fra init - typiske prosesser er 'getty', programmet som skriver 'login:' til konsollet. Hvis du starter PPP forbindelser her, må du huske at du jobber i init miljøet. System initialiseringen er ofte et skript som er startet her. I Debian 1.3 er initialiserings skriptet /etc/init.d/rc og det kaller andre initialiserings skript i rekkefølge.
Systemet inneholder mange kjørende servere (daemons) som kanskje ikke bruker standard miljøet. De fleste servere er startet fra initialiserings skriptet og har derfor init miljøet.
Når brukere logger inn i systemet, er miljøet påvirket av innstillingene som er kompilert inn i programmene, system omfattende initialiserings skript og bruker initialiserings skript. Dette er rimelig komplisert og den nåværende situasjonen er ikke fullstendig tilfredsstillende. Den er totalt forskjellig hvis brukerene logger på fra et tekst konsoll, XDM eller fra nettverk.