GNU/Linux >> Tutoriales Linux >  >> Linux

¿Se permite espacio entre #! ¿Y /bin/bash en Shebang?

En un shebang, ¿se permite un espacio o más entre #! y el intérprete?

Por ejemplo, #! /bin/bash . Parece funcionar, pero algunos dijeron que es incorrecto.

Respuesta aceptada:

Sí, esto está permitido.

El artículo de Wikipedia sobre shebang incluye un correo electrónico de 1980 de Dennis Ritchie, cuando estaba introduciendo el soporte del kernel para shebang (como parte de un paquete más amplio llamado directivas de intérprete ) en la versión 8 de Unix (énfasis mío):

Se ha cambiado el sistema para que si un archivo que se está ejecutando
comience con los caracteres mágicos #! , el resto de la línea se entiende
como el nombre de un intérprete para el archivo ejecutado. […]

Para aprovechar esta maravillosa oportunidad,
ponga

#! /bin/sh

en el margen izquierdo de la primera línea de sus scripts de shell. ¡Espacio en blanco después de ! están bien.

Entonces, los espacios posteriores al shebang han existido durante bastante tiempo y, de hecho, el ejemplo de Dennis Ritchie los está utilizando.

Tenga en cuenta que las primeras versiones de Unix tenían un límite de 16 caracteres en esta línea de interpretación, por lo que no podía tener una cantidad arbitraria de espacios en blanco allí. Esta restricción ya no se aplica en los núcleos modernos.


Linux
  1. Diferencia entre /bin/falso y /sbin/nologin

  2. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  3. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

  4. ¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

  5. ¿Cuál es la diferencia entre /tmp y /run?

Ejecute el comando bash en la canalización de jenkins

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

¿Cuándo debo usar #!/bin/bash y cuándo #!/bin/sh?

Diferencia entre /bin y /usr/bin

Se movió el contenido de /bin a /usr/bin, ¿es posible deshacerlo?

#!/bin/sh vs #!/bin/bash para máxima portabilidad