4.6. $variable, export og env

I Unix (og dermed Linux) bruger man ofte systemvariable (eng. "environment variables") til at gemme vigtig opsætningsinformation for de enkelte programmer eller for hele systemets virkemåde. Prøv f.eks. at skrive:


[tyge@hven ~]$ env
PWD=/home/tyge/linuxbog
VENDOR=intel
PAGER=less
.
.
.

Der kom mange linjer, som alle er formateret "VARIABEL=VÆRDI". Linjen "PWD" betyder f.eks. at jeg nu står i kataloget /home/tyge/linuxbog. De fleste er sat af systemet, mens brugeren kan vælge at tilføje nye eller overskrive de eksisterende. Typisk vil dette ske i ~/.profile hvis brugeren anvender bash-shellen. Lad os se om det er tilfældet:


[tyge@hven ~]$ env | grep SHELL
SHELL=/bin/bash

En nem måde at se alle variable på er at skrive:


[tyge@hven ~]$ echo $<TAB><TAB>
$BASH            $HOME            $OPTERR          $SECONDS
$BASH_VERSINFO   $HOSTNAME        $OPTIND          $SHELL
$BASH_VERSION    $HOSTTYPE        $OSTYPE          $SHELLOPTS
$COLORS          $IFS             $PATH            $SHLVL
$COLUMNS         $LANG            $PIPESTATUS      $TERM
$DIRSTACK        $LESSOPEN        $PPID            $UID
$ENV             $LINENO          $PROMPT_COMMAND  $USER
$EUID            $LINES           $PS1             $USERNAME
$GROUPS          $LOGNAME         $PS2             $_
$HISTCMD         $LS_COLORS       $PS4             $ftp_proxy
$HISTFILE        $MACHTYPE        $PWD             $http_proxy
$HISTFILESIZE    $MAIL            $QTDIR           $langfile
$HISTSIZE        $MAILCHECK       $RANDOM          $sourced

Man kan også se set eller printenv for flere eksempler på bash-variable.

Skal man så bruge den variabel i en udprintning, f.eks. på skærmen, anvendes $VARIABEL til at tilgå værdien:


[tyge@hven ~]$ echo "Jeg bruger $SHELL"
Jeg bruger /bin/bash

Vil du sætte systemvariable, så er syntaksen export VARIABEL=VÆRDI.

Lad os se på et par af de meget anvendte variable. $HOME (eller $USER) Beskriver stien til en brugers hjemmekatalog. Ofte er denne sat til /home/BRUGERNAVN

$PATH er en liste med de kataloger kommandofortolkeren skal gennemsøge for at finde et program, hvis man ikke eksplicit angiver den fulde sti til det. Ofte har en normal bruger ikke "/sbin" i sin $PATH mens systemadministratoren har.

For at rette i $PATH se /etc/profile hvis ændringerne skal gælde alle brugere. Man kan også skrive "export PATH=$PATH:/home/mig/bin" Hvis man gerne vil have at ens shell også skal søge efter de programmer man har lagt i /home/mig/bin.

$DISPLAY angiver hvilken X-server man vil have at et program skal vises på. Når du starter X, binder skærmen sig til 0:0 normalt på Ctrl + Alt + F7, man kan starte en ny X-server på 0:1 (F8) med startx -- :1 hvis man har lyst til det.