Shebang Bash forklarte med eksempler

Shebang Bash forklarte med eksempler
Bash er en kommandanspråklig tolk. Mange operativsystemer inneholder bash som standard kommandotolk, spesielt de fleste av GNU/Linux -systemene. Bash-skripting er en metode for å automatisere et sett med kommandoer som ellers ville blitt utført interaktivt en-for-en.

I denne guiden, sjekk ut hva Shebang Bash er og hvordan du bruker den.

Shebang Bash:

I bash -skripting er Shebang en måte å erklære hvilken tolk operativsystemet vil bruke for å analysere resten av filen. Shebang er preget av settet med karakterer “#!" (uten sitater).

Her er en rask oversikt over Shebang -tolkdirektivet.

#! [argumenter]

For eksempel, hvis et skript skal analyseres ved hjelp av bash -skallet, vil Shebang -tolkdirektivet se slik ut.

#!/bin/bash

Shebang -tolkdirektivet har visse egenskaper.

  • Det må være den første linjen i manuset.
  • Det må starte med en shebang (#!).
  • Det kan være eller ikke være hvitrom etter shebang (#!).
  • Tolken vil være hele veien til en binær fil.
  • Det kan være eller ikke være tolk argumenter.

Her er en kortliste over noen av de vanligste Shebang -tolkdirektivene.

  • #!/bin/bash: Manuset blir analysert ved hjelp av bash.
  • #!/usr/bin/python: manuset blir analysert ved hjelp av Python binær.
  • #!/usr/bin/env perl: skriptet blir analysert ved hjelp av perl kjørbar. Plasseringen av perl kjørbar vil bli gitt av env kommando.

Bruker Shebang Bash:

Skript kan ikke ha noen Shebang Bash. Ethvert slikt skript vil bli analysert ved hjelp av standardtolk. For eksempel er bash standardtolk for bash og sh for zsh. Mens de fleste av UNIX/Linux -systemene har bash som standard, har brukere muligheter til å bruke andre. I et slikt scenario, uten å erklære tolk, kan det hende at manuset ikke utfører sin foretrukne oppgave.

Det er to metoder for å bruke Shebang -direktivet for å erklære tolken. Den første er å erklære filveien til den kjørbare.

#!/bin/bash

En annen metode er å bruke env verktøy for å finne den kjørbare.

#!/usr/bin/env bash

Fordelen med å bruke ENV -verktøyet er at den vil se etter den kjørbare under $ bane miljøvariabelen til den nåværende brukeren. I dette eksemplet vil Env se etter bash. Hvis det er mer enn en BASH -kjørbar erklært i $ banevariabelen, vil den første brukes.

Som nevnt støtter Shebang Bash også kjørbare argumenter. For eksempel, for å bruke bash med feilsøkingsmodus, vil Shebang -tolkdirektivet se slik ut.

#!/bin/bash -x

Når det gjelder bruk env For Shebang Bash krever det å legge til et kjørbart argument å bruke "sett" -alternativet. Følgende vil for eksempel bruke bash med feilsøkingsmodus aktivert.

#!/usr/bin/env bash
$ set -x

Skripteksempel:

Vi har diskutert det grunnleggende om Shebang Bash. Det er på tide å implementere det. La oss se på implementeringen av Shebang Bash.

Start Text Editor etter eget valg og skriv inn følgende skript:

$ #!/bin/sh
$ ekko "Hello_World_bash"

Lagre filen. For å kjøre skriptet, må det merkes som en kjørbar. Kjør følgende kommando:

$ chmod +xx

Kjør manuset:

$ .//

Ikke veldig vanskelig, ikke sant? La oss nå prøve å bruke de forskjellige Shebang Bash -uttrykkene. Prøv de som er gitt nedenfor:

$ #!/usr/bin/env bash
$ set -x
$ ECHO "Hello_World_Bash_Debug"

Overstyring av Shebang Bash:

Mens Shebang Bash definerer tolken som skal brukes, kan det være lurt å bruke en annen tolk i visse situasjoner. Det er mulig å overstyre den skriptdefinerte tolken ved å eksplisitt spesifisere tolken til skallet.

Ta for eksempel en titt på følgende skript:

$ #!/bin/sh
$ ekko "Hello_world_sh"

Som standard vil det kjøres ved hjelp av sh. For å kjøre den ved hjelp av bash, bruk følgende metode:

$

Legg merke til at for normale brukssaker bare ved å bruke standard sh eller bash Tolk er god nok og overordnede er ikke relevant.

Siste tanker:

Shebang Bash er et veldig enkelt konsept. For bash -skripting er det veldig viktig å forstå og implementere det.

Interessert mer i bash -skripting? Sjekk ut denne nybegynnerguiden for hvordan du skriver et enkelt bash -manus.

Glad databehandling!