Skalet sh

Översikt, 9: Speciella variabler

I skalet finns det ett flertal variabler som har speciella funktioner. Några av dem man bör känna till är följande:
$PATH
Variabeln PATH innehåller en lista med sökvägar, åtskilda med kolon, till samtliga kataloger där skalet ska leta efter kommandon när ingen uttrycklig sökväg till kommandot anges. Vanligtvis ligger en stor del av alla de vanliga kommandona i katalogerna /bin och /usr/bin, men på de flesta Unixsystem brukar PATH innehålla flera ytterligare kataloger.
$PS1 och $PS2
Variablerna PS1 och PS2 innehåller skalets promptsträngar, det vill säga de strängar som skalet skriver ut för att tala om för användaren att det är redo att ta emot ny inmatning. Promptsträng 1 används i vanliga fall, och promptsträng 2 när skalet förväntar sig att man ska fortsätta en tidigare, oavslutad inmatning.
$PWD
PWD innehåller namnet på den katalog som är nuvarande arbetskatalog. Observera att värdet av den här variabeln inte bestämmer vilket katalog som ska vara arbetskatalog, utan bara är en kopia för att göra namnet lättare att komma åt. Ändrar arbetskatalog gör man med kommandot "cd" (för "change directory").
$HOME
Namnet på användarens hemkatalog.
$?
Den här variabeln, ?, innehåller returvärdet från det senast utförda kommandot. Returvärdet är 0 om kommandot lyckades, eller annars ett felnummer (vilket kan bero på vad för slags fel som inträffade, men många kommandon använder värdet 1 för alla fel).
$$
I denna variabel finns den nuvarande processens ID-nummer, som systemet använder för att identifiera processen. Som processnummer har man inte så stor nytta av det här numret, men det kan vara användbart bland annat för att skilja olika processers temporärfiler från varandra, speciellt om man lägger tempporärfiler i systemets allmänna temporärfilskatalog "/tmp". Ett typiskt exempel vore att istället för att bara kalla sin fil för "/tmp/arbetsfil", så kallar man det "/tmp/arbetsfil$$", där skalet ersätter $$ med processens nummer, så minskar risken för att någon annan process försöker använda en fil med samma namn.