GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Shebang

Se stai imparando lo scripting Bash leggendo il codice di altre persone, potresti aver notato che la prima riga degli script inizia con #! personaggi e il percorso per l'interprete Bash.

Questa sequenza di caratteri (#! ) si chiama shebang e viene utilizzato per dire al sistema operativo quale interprete utilizzare per analizzare il resto del file.

Direttiva per interpreti Shebang #

La direttiva per interpreti Shebang assume la forma seguente:

#!interpreter [arguments]
  • La direttiva deve essere la prima riga dello script.
  • La direttiva deve iniziare con shebang #!
  • Lo spazio bianco dopo i caratteri shebang è facoltativo.
  • L'interprete è il percorso completo di un file binario (es:/bin/sh , /bin/bash ).
  • Gli argomenti dell'interprete sono facoltativi.

Esempi:

  • #!/bin/bash - Utilizza bash per analizzare il file.
  • #!/usr/bin/env perl - Utilizza il env comando per trovare il percorso del perl eseguibile.
  • #!/usr/bin/python Esegue il file usando python binario.

Utilizzo di Shebang negli script Bash #

Se uno shebang non è specificato e l'utente che esegue lo script Bash sta usando un'altra Shell, lo script verrà analizzato da qualunque sia l'interprete predefinito utilizzato da quella Shell. Ad esempio, l'interprete predefinito per bash è bash e per zsh è sh . Per assicurarti che il tuo script venga sempre interpretato con Bash dovrai specificare il percorso eseguibile usando shebang.

Esistono due modi per utilizzare la direttiva Shebang e impostare l'interprete.

  1. Usando il percorso assoluto del binario bash:

    #!/bin/bash
  2. Utilizzando l'env utilità:

    #!/usr/bin/env bash

Il vantaggio dell'utilizzo del secondo approccio è che cercherà bash eseguibile nel $PATH dell'utente variabile ambientale. Se sono presenti più percorsi per bash , il primo verrà utilizzato dallo script.

Quando si utilizza la prima opzione per aggiungere un'opzione alla fornitura della shell Bash, passarla all'interprete. Ad esempio, per eseguire lo script in modalità di debug dovresti usare #!/bin/bash -x .Se stai usando env metodo quindi è necessario utilizzare set per dichiarare l'opzione. Per abilitare la modalità di debug dovresti aggiungere set -x dopo la linea Shebang.

Script di esempio n.

Creiamo un semplice script usando shebang che stamperà "Hello, World". Apri il tuo editor di testo e incolla la seguente riga:

nano hello_world
ciao_mondo
#!/bin/bash

echo "Hello, World"

Per poter eseguire lo script senza specificare l'interprete dalla riga di comando è necessario rendere eseguibile il file:

chmod +x hello_world

Ora se puoi eseguire lo script digitando ./ seguito dal nome dello script:

./hello_world
Hello, World

Sostituzione di Shebang #

Se per qualche motivo si desidera sovrascrivere l'interprete impostato nella riga Shebang è necessario eseguire lo script specificando esplicitamente la shell desiderata.

Ad esempio, per eseguire uno script con #!/bin/sh specificato nella riga Shebang usando bash shell dovresti digitare:

bash hello_world

Tieni presente che non è una buona idea sovrascrivere l'interprete della shell poiché potrebbe causare un comportamento imprevisto dello script.

Conclusione #

A questo punto dovresti avere una buona comprensione di cos'è Shebang e come usarlo nei tuoi script Bash.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Script Bash(I)

  2. Argomenti multipli in Shebang?

  3. È consentito lo spazio tra #! E /bin/bash a Shebang?

  4. Ordinamento in bash

  5. comando di esportazione bash

Bash fino a Loop

Dichiarazione del caso Bash

Bash if..else Statement

Matrici Bash

Comando Bash printf

Matrice associativa in Bash