2010-05-29 18 views
7

En el comienzo de un archivo en mi servidor (Linux), que se encuentra en la carpeta /etc/init.d/ que tienen esta línea:¿Qué hace la línea '!/Bin/sh-e'?

!/bin/sh -e 

¿Qué significa, porque cada vez que ejecuto el resto del script funciona bien excepto por un error que muestra:

!/bin/sh not found 

¿Alguna idea?

+0

Hasta el momento, nadie ha abordado el '-e', que no parece ser una bandera aceptada por el bash en mi MacBook. – dmckee

+0

@dmckee: sh! = Bash. 'man sh' (o' man dash') muestra '-e errexit: si no es interactivo, salga inmediatamente si falla algún comando no probado ...' –

+0

Por cierto @Camran, la razón por la que todavía se ejecuta sin corregir la línea de shebang es probablemente porque estás llamando al intérprete de shell directamente, por ejemplo 'sh myScript'. Con la línea shebang, puede establecer que el archivo sea ejecutable usando 'chmod + x ...' y ejecutarlo sin llamar al intérprete de forma explícita. –

Respuesta

9

Me parece un desastre shebang line. Debes poner un '#' delante del '!'.

+4

Sí, definitivamente una línea de shebang en mal estado. Busque un '$ Autor: William Hung $' en algún lugar del archivo. –

3
#!/bin/bash 

esta es la primera línea en el script que le dice al sistema que use bash shell para ejecutar el script.

6

Esa línea define qué programa ejecutará el script dado. Para sh normalmente esa línea debe comenzar con el carácter # como tan:

#!/bin/sh -e 

nombre largo del indicador -e es errexit, haciendo que la secuencia de comandos para salir inmediatamente en el primer error.