Para entender esto, debes darte cuenta de que la primera línea del script se lee dos veces , por 2 programas diferentes. La primera vez, el núcleo abre el archivo y busca esa secuencia de caracteres ( #!
) en la primera línea. Si lo encuentra, ejecuta el programa de shell que se indica allí, pasando el nombre del archivo como parámetro. (por ejemplo, si el archivo /home/me/foo
comienza con #!/bin/sh
, el núcleo se ejecutará /bin/sh /home/me/foo
).
A continuación, el shell ( bin/sh
o el programa de interpretación especificado) lee el archivo. El shell no sabe nada acerca de las líneas shebang, pero seguirá leyendo la primera línea porque es como cualquier otra línea en el archivo ... las lee todas. No desea que el shell se bloquee o altere su comportamiento de ninguna manera ... la forma de hacerlo es hacerlo tratar como un comentario e ignorarlo. Por lo tanto, el mejor carácter para comenzar con una instrucción del núcleo sería el carácter de comentario.
#!
(tanto como dmr recuerda ...), incluida una explicación de por qué#
(sí, la línea tuvo que ser ignorada por los shells existentes).