¿Se permite espacio entre #! y / bin / bash en shebang?

48

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

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

Tim
fuente
¿Entonces no es necesario un espacio ? Siempre he visto al menos uno ...
Bakuriu
66
@Bakuriu ¿Dónde? Casi nunca he visto uno ...
Jens

Respuestas:

48

Sí, esto está permitido.

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

El sistema se ha cambiado de modo que si un archivo que se está ejecutando comienza 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. Los espacios en blanco después !están bien.

Entonces, los espacios después del shebang han existido durante bastante tiempo, y de hecho, el ejemplo de Dennis Ritchie los está usando.

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

alexwlchan
fuente
38

Sí, se permiten espacios en blanco después del #!. Incluso hubo un pensamiento (erróneo) de que algunos sistemas podrían requerirlo, pero siempre ha sido opcional.

Para leer más, intente aquí

Eric Renouf
fuente