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.