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
- Utilizzabash
per analizzare il file.#!/usr/bin/env perl
- Utilizza ilenv
comando per trovare il percorso delperl
eseguibile.#!/usr/bin/python
Esegue il file usandopython
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.
-
Usando il percorso assoluto del binario bash:
#!/bin/bash
-
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.