2010-05-29 12 views
7

All'inizio di un file sul mio server (Linux), che si trova nella cartella /etc/init.d/ ho questa linea:Cosa fa la riga '!/Bin/sh -e'?

!/bin/sh -e 

Che cosa significa, perché ogni volta che eseguo il resto dello script funziona bene tranne che per un errore che mostra:

!/bin/sh not found 

Qualche idea?

+0

Al momento, nessuno ha indirizzato il '-e', che non sembra essere una bandiera accettata dalla bash sul mio MacBook. – dmckee

+0

@dmckee: sh! = Bash. 'man sh' (o' man dash') mostra '-e errexit: Se non interattivo, esci immediatamente se qualche comando non testato fallisce ...' –

+0

A proposito @Camran, il motivo per cui funziona ancora senza correggere la linea di shebang è probabilmente perché stai chiamando direttamente l'interprete della shell, ad es 'sh myScript'. Con la riga shebang, è possibile impostare il file per essere eseguibile usando 'chmod + x ...' ed eseguirlo senza chiamare esplicitamente l'interprete. –

risposta

9

Mi sembra un incasinato shebang line. Devi mettere un '#' davanti al '!'.

+4

Sì, sicuramente una linea incasinata. Cerca un '$ Autore: William Hung $' da qualche parte nel file. –

3
#!/bin/bash 

questa è la prima riga nello script per indicare al sistema di utilizzare la shell bash per eseguire lo script.

6

Questa riga definisce quale programma eseguirà lo script specificato. Per sh normalmente quella linea deve iniziare con il carattere # come così:

#!/bin/sh -e 

nome lungo del flag -e è errexit, causando lo script per uscire immediatamente sul primo errore.