Normalmente uno script di shell viene eseguito dalla shell predefinita definita nel file/etc/passwd. Ma puoi definire esplicitamente un programma che può eseguire il tuo script.
Unices utilizza un metodo comune per determinare quale programma è necessario per eseguire uno script specifico (uomo execve(2)). Se lo script ha i diritti di esecuzione corretti impostati e in uno script la prima riga inizia con un #!
caratteri, verrà eseguito dal programma definito in seguito.
Per esempio, se la prima riga è #!/usr/bin/awk -f
poi il resto del file viene passato al programma awk
(così si deve usare awk
sintassi). O se un Makefile inizia con #!/usr/bin/make -f
allora il resto del file verrà passato a make
. È possibile avviare lo script come un normale programma e lo script può essere scritto nella sintassi awk
o make
(o in qualsiasi modo definito).
Se execve
non trova #!
come i primi due carattere del file, prenderà in considerazione come un normale file di script che verrà eseguito così com'è.
Quindi utilizzando #!
È possibile determinare il linguaggio dello script e Non è necessario sapere quale shell viene utilizzata dall'utente che utilizza lo script. In qualsiasi altra riga, #!
verrà interpretato come shell predefinita, che di solito è solo una riga di commento.
Sarebbe più semplice, se hai circondato gli script con i tag del codice. Il carattere irregolare lo rende davvero confuso ... – user1581900
#!/Bin/sh specifica il percorso della shell da utilizzare per lo script. La domanda simile è stata fornita qui: http: // StackOverflow.it/questions/8967902/why-do-you-need-to-put-bin-bash-al-inizio-di-uno-script-file – user1581900
possibile duplicato ... http: //stackoverflow.com/questions/7366775/what-does-the-line-bin-sh-mean-in-a-unix-shell-script – Peeyush