Когда вы пытаетесь выполнить программу в Unix (ту, в которой установлен исполняемый бит), операционная система будет просматривать первые несколько байтов файла. Они образуют так называемое «магическое число», которое можно использовать для определения формата программы и способа ее выполнения.
#!
соответствует магическому числу 0x2321 (найдите его в таблице ASCII). Когда система видит это магическое число, она знает, что имеет дело с текстовым скриптом, и читает до следующего \n
(есть предел, но он ускользает от меня). Определив переводчика (первый аргумент после Шебанга), он вызовет переводчика.
Другие файлы также имеют магические числа. Попробуйте посмотреть файл растрового изображения (.BMP) через less
, и вы увидите, что первые два символа BM
. Это магическое число обозначает, что файл действительно является растровым изображением.