Cuando intenta ejecutar un programa en Unix (uno con el conjunto de bits ejecutables), el sistema operativo observará los primeros bytes del archivo. Estos forman el llamado "número mágico", que se puede utilizar para decidir el formato del programa y cómo ejecutarlo.
#!
corresponde al número mágico 0x2321 (búscalo en una tabla ascii). Cuando el sistema ve ese número mágico, sabe que se trata de un script de texto y lo lee hasta el siguiente \n
(hay un límite, pero me escapa atm). Después de haber identificado al intérprete (el primer argumento después del shebang) llamará al intérprete.
Otros archivos también tienen números mágicos. Intente mirar un archivo de mapa de bits (.BMP) a través del less
y verá que los primeros dos caracteres son BM
. Este número mágico denota que el archivo es de hecho un mapa de bits.
[Shebang] (http://en.wikipedia.org/wiki/Shebang_%28Unix%29) – drootang
Buena explicación sobre askubuntu: http://askubuntu.com/questions/141928/what-is- difference-between-bin-sh-and-bin-bash –
Posible duplicado de [¿Por qué necesita poner #!/bin/bash al comienzo de un archivo de script?] (http://stackoverflow.com/questions/8967902/why-do-you-need-to-put-bin-bash-at-the-beginning-of-a-script-file) –