hur man kör ett skalskript i Linux [Essentials Explained for Beginners]

det finns två sätt att köra ett skalskript i Linux. Du kan använda:

bash script.sh

eller så kan du köra skalskriptet så här:

./script.sh

det kanske enkelt, men det förklarar inte mycket. Oroa dig inte, jag ska göra den nödvändiga förklaringen med exempel så att du förstår varför en viss syntax används i det givna formatet när du kör ett skalskript.

jag kommer att använda detta one line shell script för att göra saker så okomplicerade som möjligt:

:~/Scripts$ cat hello.sh echo "Hello World!"

Metod 1: Kör ett skalskript genom att skicka filen som argument till skalet

den första metoden innebär att skicka skriptfilnamnet som ett argument till skalet.

med tanke på att bash är standardskalet kan du köra ett skript så här:

bash hello.sh

vet du fördelen med detta tillvägagångssätt? Ditt skript behöver inte ha exekveringsbehörighet. Ganska praktiskt för snabba och enkla uppgifter.

kör ett skalskript Linux
kör ett skalskript Linux

om du inte redan är bekant rekommenderar jag dig att läsa min detaljerade guide om filtillstånd i Linux.

Tänk på att det måste vara ett skalskript som du skickar som argument. Ett skalskript består av kommandon. Om du använder en vanlig textfil kommer den att klaga på felaktiga kommandon.

kör textfil som skript i Linux
kör en textfil som skript

i det här tillvägagångssättet angav du uttryckligen att du vill använda bash som tolk för skriptet.

Shell är bara ett program och bash är en implementering av det. Det finns andra sådana skal program som ksh, zsh, etc. Om du har andra skal installerade kan du också använda det istället för bash.

till exempel installerade jag zsh och använde den för att köra samma skript:

kör skalskript med Zsh
kör skalskript med Zsh

Rekommenderad läsning:

Metod 2: Kör skalskript genom att ange dess sökväg

den andra metoden för att köra ett skalskript är genom att ange dess sökväg. Men för att det ska vara möjligt måste din fil vara körbar. Annars har du” tillstånd nekad ” fel när du försöker köra skriptet.

så först måste du se till att ditt skript har exekveringsbehörighet. Du kan använda kommandot chmod för att ge dig själv detta tillstånd så här:

chmod u+x script.sh

när ditt skript är körbart är allt du behöver göra att skriva filnamnet tillsammans med dess absoluta eller relativa sökväg. Oftast är du i samma katalog så att du bara använder den så här:

./script.sh

om du inte är i samma katalog som ditt skript kan du ange den absoluta eller relativa sökvägen till skriptet:

kör skalskript i annan katalog
kör skalskript i annan katalog

det där ./ innan skriptet är viktigt (när du är i samma katalog som skriptet)

exekvera skalskript Linux

Varför kan du inte använda skriptnamnet när du är i samma katalog? Det beror på att dina Linux-system letar efter körbara filer som ska köras i några utvalda kataloger som anges i PATH-variabeln.

här är värdet av PATH variabel för mitt system:

:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

det betyder att alla filer med exekveringsbehörigheter i en av följande kataloger kan köras var som helst i systemet:

  • /hem / abhishek/.lokal / bin
  • /usr/lokal/sbin
  • /usr/lokal/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /usr/spel
  • /usr/local/games
  • /snap/bin

binärerna eller körbara filer för Linux-kommandon som ls, cat etc finns i en av dessa kataloger. Det är därför du kan köra dessa kommandon var som helst på ditt system bara genom att använda deras namn. Se, kommandot ls finns i katalogen/usr / bin.

hitta kommando Linux

när du anger skriptet utan den absoluta eller relativa sökvägen kan det inte hitta det i katalogerna som nämns i SÖKVÄGSVARIABELN.

varför de flesta skalskript innehåller#! / bin / bash i början av skalskripten?

kom ihåg hur jag nämnde att shell bara är ett program och det finns olika implementeringar av skal.

när du använder #! / bin / bash, du anger att skriptet ska köras med bash som tolk. Om du inte gör det och kör ett skript i ./script.sh sätt, det körs vanligtvis med vilket skal du kör.

spelar det någon roll? Det kan det. Se, det mesta av skalsyntaxen är vanligt i alla slags skal men vissa kan skilja sig åt.

till exempel är arraybeteendet annorlunda i bash-och zsh-skal. I zsh börjar arrayindexet vid 1 istället för 0.

Bash Vs Zsh
Bash Vs Zsh

Använda #! / bin / bash indikerar att skriptet är bash – skalskript och ska köras med bash som tolk oavsett vilket skal som används på systemet. Om du använder zsh-specifik syntax kan du ange att det är zsh-skript genom att lägga till #! / bin / zsh som första raden i manuset.

utrymmet mellan #! / bin / bash spelar ingen roll. Du kan också använda #!/ bin / bash.

var det till hjälp?

jag hoppas att den här artikeln läggs till i din Linux-kunskap. Om du fortfarande har frågor eller förslag, vänligen lämna en kommentar.

expertanvändare kan fortfarande nitpick den här artikeln om saker jag missade. Men problemet med sådana nybörjarämnen är att det inte är lätt att hitta rätt informationsbalans och undvika att ha för mycket eller för få detaljer.

om du är intresserad av att lära dig bash-skript har vi en hel Bash-Nybörjarserie på vår sysadmin-fokuserade webbplats Linux-handbok. Om du vill kan du också köpa e-boken med ytterligare övningar för att stödja Linux-handboken.

Gillar du vad du läser? Vänligen dela det med andra.

50Shares
  • Facebook0
  • Twitter49
  • LinkedIn1
  • Reddit0

Lämna ett svar

Lämna ett svar

Din e-postadress kommer inte publiceras.