Когда оболочку просят запустить файл с включенным исполняемым битом, она проверяет файл и определяет, начинается ли он с символа #!если это произойдет, то она выполнит эту команду, которая получит текст своей программы из оставшейся части файла.
Если файл не начинается с шебанга, то оболочка попытается выполнить его сама.Это то, что происходит для вас, и оболочка интерпретирует первую строку как комментарий.