Ricerca…


Sintassi

  • Usa /bin/bash come interprete bash:

    #! / Bin / bash

  • Cerca l'interprete bash nella variabile d'ambiente PATH con env eseguibile:

    #! / usr / bin / env bash

Osservazioni

Un errore comune è provare ad eseguire file di script \r\n formattati in end-line di Windows su sistemi UNIX / Linux, in questo caso l'interprete di script usato nello shebang è:

/bin/bash\r

Ed è ignaro non trovato ma può essere difficile da capire.

Shebang diretto

Per eseguire un file di script con l'interprete bash , la prima riga di un file di script deve indicare il percorso assoluto dell'eseguibile bash da utilizzare:

#!/bin/bash

Il percorso bash in shebang viene risolto e utilizzato solo se uno script viene avviato direttamente in questo modo:

./script.sh

Lo script deve avere il permesso di esecuzione.

Lo shebang viene ignorato quando un interprete bash viene esplicitamente indicato per eseguire uno script:

bash script.sh

Env shebang

Per eseguire un file di script con l'eseguibile bash trovato nella variabile d'ambiente PATH utilizzando l' env eseguibile, la prima riga di un file di script deve indicare il percorso assoluto dell'eseguibile env con l'argomento bash :

#!/usr/bin/env bash

Il percorso env nello shebang viene risolto e utilizzato solo se uno script viene avviato direttamente in questo modo:

script.sh

Lo script deve avere il permesso di esecuzione.

Lo shebang viene ignorato quando un interprete bash viene esplicitamente indicato per eseguire uno script:

bash script.sh

Altri shebang

Ci sono due tipi di programmi che il kernel conosce. Un programma binario è identificato dalla sua intestazione ELF ( E xtenable L oadable F ormat), che di solito è prodotta da un compilatore. Il secondo sono script di qualsiasi tipo.

Se un file inizia nella prima riga con la sequenza #! quindi la stringa successiva deve essere un percorso di un interprete. Se il kernel legge questa linea, chiama l'interprete chiamato da questo percorso e fornisce tutte le seguenti parole in questa riga come argomenti all'interprete. Se non c'è nessun file chiamato "qualcosa" o "sbagliato":

#!/bin/bash something wrong
echo "This line never gets printed"

bash prova ad eseguire il suo argomento "qualcosa di sbagliato" che non esiste. Anche il nome del file di script è stato aggiunto. Per vederlo chiaramente usa un echo shebang:

#"/bin/echo something wrong 
# and now call this script named "thisscript" like so:
# thisscript one two
# the output will be:
something wrong ./thisscript one two

Alcuni programmi come awk usano questa tecnica per eseguire script più lunghi che risiedono in un file su disco.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow