Slik Kjører Du Et Skallskript I Linux [Essentials Explained For Beginners]

Det er to måter å kjøre et skallskript på I Linux. Du kan bruke:

bash script.sh

Eller du kan utføre shell script som dette:

./script.sh

Det er kanskje enkelt, men det forklarer ikke mye. Ikke bekymre deg, jeg skal gjøre det nødvendige å forklare med eksempler slik at du forstår hvorfor en bestemt syntaks brukes i det oppgitte formatet mens du kjører et skallskript.

jeg skal bruke dette one line shell script for å gjøre ting så ukomplisert som mulig:

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

Metode 1: Kjøre et skallskript ved å sende filen som argument til shell

Den første metoden innebærer å sende skriptfilnavnet som et argument til skallet.

Med Tanke på at bash er standard skallet, kan du kjøre et skript som dette:

bash hello.sh

kjenner du fordelen med denne tilnærmingen? Skriptet ditt trenger ikke å ha utfør-tillatelsen. Ganske praktisk for raske og enkle oppgaver.

Kjør Et Skallskript Linux
Kjøre Et Skallskript Linux

Hvis du ikke er kjent allerede, anbefaler jeg deg å lese min detaljerte guide på filtillatelse I Linux.

Husk at det må være et skallskript som du passerer som argument. Et skallskript består av kommandoer. Hvis du bruker en vanlig tekstfil, vil den klage på feil kommandoer.

Kjører Tekstfil Som Skript I Linux
Kjører En Tekstfil Som Skript

i denne tilnærmingen angav du eksplisitt at du vil bruke bash som tolk for skriptet.

Shell er bare et program og bash er en implementering av det. Det finnes andre slike skallprogram som ksh, zsh, etc. Hvis du har andre skall installert, kan du også bruke det i stedet for bash.

for eksempel installerte jeg zsh og brukte den til å kjøre det samme skriptet:

Utfør Shell Script Med Zsh
Utfør Shell Script Med Zsh

Anbefalt Lesning:

Metode 2: Utfør shell script ved å angi banen

den andre metoden for å kjøre et shell script er ved å gi banen. Men for at det skal være mulig, må filen være kjørbar. Ellers vil du ha» tillatelse nektet » feil når du prøver å kjøre skriptet.

så først må du sørge for at skriptet ditt har utføringstillatelsen. Du kan bruke chmod-kommandoen til å gi deg selv denne tillatelsen som dette:

chmod u+x script.sh

Når skriptet er kjørbar, er alt du trenger å gjøre å skrive inn filnavnet sammen med sin absolutte eller relative bane. Ofte er du i samme katalog, slik at du bare bruker den slik:

./script.sh

hvis du ikke er i samme katalog som skriptet ditt, kan du angi den absolutte eller relative banen til skriptet:

Kjører Shell Script I Annen Katalog
Kjører Shell Script I Annen Katalog

Det ./ før skriptet er viktig (når du er i samme katalog som skriptet)

Utfører Skallskript Linux

Hvorfor kan du ikke bruke skriptnavnet nar du er i samme katalog? Det er fordi Linux-systemer ser for kjør å kjøre i noen utvalgte kataloger som er angitt i PATH variabelen.

Her er verdien AV PATH-variabelen for systemet mitt:

:~$ 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

Dette betyr at enhver fil med utførelsesrettigheter i en av følgende kataloger kan utføres fra hvor som helst i systemet:

  • /hjem / abhishek/.lokal/bin
  • /usr/lokal/sbin
  • /usr/lokal/bin
  • /usr/sbin
  • /sbin
  • /bin
  • /usr/spill
  • /usr/local/games
  • /snap/bin

binærfiler eller kjørbare filer for linux-kommandoer som ls, cat etc er plassert i en av disse katalogene. Dette er grunnen til at du kan kjøre disse kommandoene fra hvor som helst på systemet ditt bare ved å bruke navnene deres. Se, ls-kommandoen er plassert i/usr / bin-katalogen.

Finne Kommando Linux

når du angir skriptet UTEN den absolutte eller relative banen, kan den ikke finne den i katalogene som er nevnt i PATH-variabelen.

hvorfor de fleste skallskript inneholder #! / bin / bash i begynnelsen av skallskriptene?

Husk hvordan jeg nevnte at shell bare er et program, og det er forskjellige implementeringer av skall.

Når du bruker #! / bin / bash, du angir at skriptet skal kjøre med bash som tolk. Hvis du ikke gjør det og kjører et skript inn ./ manus.sh måte, det er vanligvis kjører med hva skallet du kjører.

spiller det noen rolle? Det kunne. Se, det meste av skallsyntaksen er vanlig i alle slags skall, men noen kan avvike.

matriseatferden er for eksempel forskjellig i bash-og zsh-skall. I zsh starter matriseindeksen på 1 i stedet for 0.

Bash Vs Zsh
Bash Vs Zsh

Bruke #! / bin / bash indikerer at skriptet er bash shell script og bør kjøres med bash som tolk uavhengig av skallet som blir brukt på systemet. Hvis du bruker zsh spesifikk syntaks, kan du angi at det er zsh script ved å legge til #! / bin / zsh som den første linjen i skriptet.

avstanden mellom #! / bin / bash spiller ingen rolle. Du kan også bruke #!/ bin / bash.

var det nyttig?

jeg håper denne artikkelen lagt Til Linux kunnskap. Hvis du fortsatt har spørsmål eller forslag, legg igjen en kommentar.

Ekspertbrukere kan fortsatt nitpick denne artikkelen om ting jeg savnet. Men problemet med slike nybegynneremner er at det ikke er lett å finne den rette balansen mellom informasjon og unngå å ha for mye eller for få detaljer.

hvis du er interessert i å lære bash script, har vi en hel Bash Nybegynner Serie på vår sysadmin fokusert nettside Linux Handbook. Hvis du vil, kan du også kjøpe ebok med flere øvelser for å støtte Linux Handbook.

Liker du det du leser? Vennligst del det med andre.

50 aksjer
  • Facebook0
  • Twitter49
  • LinkedIn1
  • Reddit0

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.