Miljøvariabler (environment variables)

Dette innlegget bygger videre på innlegget Grunnleggende om Terminalen i Mac og Linux.

Miljøvariabler fungerer som variabler i programmering, og er spesielle navn som kan holde på en verdi. De angis med dollartegn og navnet på variabelen med store bokstaver. I systemet er det allerede mange satte variabler.

env – printer ut alle miljøvariablene til skjermen

For å vise verdien av en viss variabel kan man bruke f.eks. echo $VARIABELNAVN.

For å endre en variabel, skriver man baret navnet på variabelen uten dollartegn etterfulgt av et “er lik”-tegn og verdien på variabelen. Variablene skrives alltid med bare store bokstaver. For å f.eks. endre variabelen som bestemmer innholdet i selve prompten, PS1, skriver man PS1=”verdi”. Verdien kan bruke spesielle sekvenser som f.eks. \u og \w som representerer hhv. brukernavn og gjeldende arbeidsmappe, som brukes dynamisk av skallet.

Man kan også lage egne variabler. For å lage en ny variabel gjør man akkurat som når man skal endre en eksisterende: MINVARIABEL=”minverdi”.  Hvis variabelnavnet finnes, blir den endret. Hvis ikke, lages en ny med navnet man angir.

Variabler er som standard kun tilgjengelig i den økten de blir laget i, og ikke i nye prosesser som startes fra den økten. Starter man f.eks. en ny bash-økt med kommandoen bash etter å ha laget eller endret en variabel, er ikke denne tilgjengelig i den nye økten. Ønsker man at den skal være det, kan man bruke kommandoen export: export MINVARIABEL=”minverdi”.

Variabelen $PATH er en viktig variabel. Denne inneholder banen til mapper – separert med kolon – som inneholder kjørbare filer. Den kan f.eks. se slik ut: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin

Når man kjører en vanlig kommando som f.eks. echo letes det etter en kjørbar fil som heter “echo” i disse mappene, en etter en.  Det er vanlig å endre $PATH-variabelen for å kunne kjøre programmer du selv har installert. Da legger du bare til mappen som inneholder de(n) kjørbare filen(e), slik at du enkelt kan kjøre denne ved å skrive kun navnet på den og ikke den absolutte banen, akkurat som andre vanlige kommandoer/programmer. For å legge til en ny mappe først i $PATH kan du enkelt skrive: PATH=”bane/til/mappe:$PATH”. Men vanligvis vil man ikke gjøre det på denne måten, ettersom disse endringene blir borte når du f.eks. restarter maskinen. Så for å endre $PATH-variabelen permanent må du i stedet endre oppføringene i en spesiell fil; et oppstartsscript som lastes hver gang ved oppstart. Denne varierer på ulike systemer og skall, så sjekk hvilken fil du må endre på ditt system. For bash brukes gjerne .bashrc eller .profile på Linux, .bash_profile på Mac OSX , og hvis du kjører et annet skall enn bash, vil den hete noe helt annet. Filen er plassert i home-mappen, og på mange systemer, bl.a. Mac, vil den ikke eksistere hvis du ikke allerede har laget den. For å opprette/redigere den på Mac kan du f.eks. skrive nano ~/.bash_profile og legge inn f.eks. export PATH=/bane/til/mappe:$PATH til slutt i filen. Nano oppretter filen hvis det ikke finnes noen fil med det filnavnet, tilden sier at den skal ligge i home-mappen, og export-kommandoen sørger for at variabelen er tilgjengelig i nye prosesser som startes. Lagre filen og den vil åpnes hver gang du starter et skall eller logger inn (avhengig av hvilket system og hvilken fil).

For å finne plasseringen til et visst program, kan man bruke kommandoen which. Eksempel: which echo.

Leave a Reply

Your email address will not be published. Required fields are marked *