Skalet sh

Översikt, 3: Variabler

Variabler i skalet fungerar så att man använder tecknet $ följt av variabelnamnet när man vill stoppa in variabelns värde någonstans på kommandoraden. Om man exempelvis har namnet på en katalog i variabeln KATALOG, så kan man se på innehållet i katalogen med

ls $KATALOG

När man ska tilldela ett värde till en variabel använder man inte något $-tecken:

set variabelnamn=värde
eller bara
variabelnamn=värde

Det finns två sorters variabler, interna och externa. Externa är de variabler som exporterats, medan de övriga är interna. Exportera en variabel gör man med kommandot

export variabelnamn
Skillnaden mellan de två typerna är att värdet av externa variabler automatiskt exporteras till alla program (kommandon) som utförs av skalet, medan de interna variablerna bara är åtkomliga för skalet självt.

Den vanligaste anledningen att man vill exportera en variabel är att ett eller flera program använder variabelvärdet som default för någon inställningsparameter eller istället för ett argument. Till exempel använder de flesta program till X-windows värdet av variabeln DISPLAY som namn på den display man ska arbeta mot, om man inte gett flaggan '-display arbetsdisplay' till programmet.

Hur det fungerar

Externa variabler är en av de saker som en process vanligtvis ärver från sin förälderprocess, om inte annat angetts. De samlas ihop till en lista som kallas för processens "environment", vilket har provocerat fram det kryptiska svenska namnet "miljövariabel" för de externa variablerna.

Man kan använda kommandots "printenv" för att få alla exporterade variabler utskrivna på skärmen. Det finns även ett kommando som heter "env" som bland annat kan användas för att starta kommandon med ett nykonstruerat "environment", istället för det som det annars skulle ärva från skalet.