TDP001 Handhavande av datormiljö
Terminalkommandon 7
Jag nämnde lite snabbt i förra utskicket att det finns en fil,${HOME}/.bashrc
, som körs automatiskt när du startar en terminal. Detta brukar vara en bra plats att spara alias som man vill ha tillgång till i alla terminaler, men det är också en bra plats att ge (globala) värden på variabler.
En variabel man vill använda i den terminal man står i just nu är enkel att skapa. Likt python är det bara att skriva variabelnamn=värde (utan mellanslag), exempelvis
Denna variabel finns dock endast i denna terminal och kommer inte automatiskt finnas i program (eller script) man startar från terminalen. Detta kan man lösa med hjälp av export.
MY_NAME=pontus
Antag att vi har ett script (en fil med kommandon) med namnet print_name.sh
med följande innehåll:
Därefter kör vi följande kommandon i terminalen:
#!/bin/bash
if [[ -z $MY_NAME ]]
then echo "No name given"
else
echo $MY_NAME
fi
Första gången print_name kördes fick vi bara en tom rad som utskrift, det krävdes att export kördes för att variabeln skulle synas i scriptet.
$ chmod +x print_name.sh
$ MY_NAME=pontus
$ ./print_name.sh
No name given
$ export MY_NAME
$ ./print_name.sh
pontus
$
Ett alternativ till export (som gör värdet globalt tillgängligt) är att sätta variabeln för endast en körning:
Det går även att ge värden samtidigt som man gör export:
$ MY_NAME=pontus ./print_name.sh
pontus
Om man vill sätta variablers värden i
export MY_NAME=pontus
.bashrc
gör man oftast det enligt detta format.
PATH
VariabelnPATH
är en kolonseparerad lista av sökvägar som bash automatiskt söker igenom när vi försöker starta ett program i terminalen. Antag att min PATH
ser ut enligt nedan:
PATH=/usr/local/bin:/bin:/usr/bin:/sw/local/bin:/usr/games:.Om jag exempelvis skriver
python3
i terminalen och trycker på enter kommer bash börja med att leta efter ett program med det namnet i katalogen /usr/local/bin
. Om inget hittas där söker den vidare i /bin
och därefter i /usr/bin
. När ett program med rätt namn hittas (i mitt fall /usr/bin/python3
) avslutas sökningen.
Variabeln PATH
är väldigt viktig för systemet, så lyckas du nollställa den får du problem, men det kan vara trevligt att lägga till en egen katalog i den listan. Om jag exempelvis har en katalog där jag lägger hjälpscript och bra program kan det vara en bra kandidat att lägga till. Exempelvis skulle jag kunna skriva
export PATH=$PATH:/home/my_user/bin
för att lägga till en katalog bin från min hemkatalog som sista alternativ för bash att söka efter program.
Om man får problem med att fel program körs beror det troligen på att katalogerna i PATH
är i fel ordning. Man kan använda which för att ta reda på var ett visst program finns enligt PATH (dvs vilket program som kommer startas givet ett visst namn).
$ which python3
/usr/bin/python3
Språkinställningar
Många program är smarta nog att göra olika baserat på systemets språkinställningar. Dessa bestäms till stor del av en grupp av så kallade locale-variabler. Ett program söker efter ditt språk enligt föjande ordning:LANGUAGE LC_ALL LC_xxx (där xxx exempelvis kan vara NUMERIC, TIME, MONETARY osv) LANGMed hjälp av dessa kan jag exempelvis sätta
LANG=sv_SE.utf8
för att få svenska (i unicode) som standard och därefter LC_TIME=en_US.utf8
för att få tider uttryckta på amerikanskt format.
Det kan också vara trevligt att sätta locale för specifika program. Exempelvis ger kompilatorn g++
(som arbetar med c++-kod) oftast mycket bättre felmeddelanden på engelska. För att få engelsk utskrift när jag kompilerar filen min_kod.cc
kan jag alltså köra
$ LANGUAGE=en g++ min_kod.cc
För att se värden på alla locale-variabler kan du köra kommandot locale. Med locale -a
listas alternativ du kan välja på locale-variablerna (som finns installerade på ditt system).
Observera att det så klart krävs att tillverkaren av det program du använder har använt sig av locale-variabler för att det ska bli någon skillnad i utskrifter.
RANDOM
Vi avslutar med en rolig variabel med namnRANDOM
. Som det låter så ger RANDOM ett nytt slumpvärde (ett tal i intervallet [0,32767]
) varje gång vi läser den.
$ echo $RANDOM
24518
$ echo $RANDOM
295
$ echo $RANDOM
15621
Man kan sätta slumpfröet själv genom att ge RANDOM ett värde. Detta betyder att om jag exempelvis sätter RANDOM=5
kommer jag få samma sekvens av värden nästa gång jag sätter samma värde.
Sidansvarig: Pontus Haglund
Senast uppdaterad: 2022-09-30