Исполняемые файлы не имеют расширения в мире Unix, потому что они предназначены для выполнения в оболочке. Представьте себе следующее:
cat.bin file.txt | less.bin
Это ужасно! Unix использует так называемые магические байты в начале каждого файла для определения типа файла. Для двоичного формата по умолчанию, называемого ELF, в начале есть 4-байтовое слово 7f 45 4c 46
. Это возможно не для всех форматов файлов. Рассмотрим код C или код Java. Они оба могут начинаться с комментариев и могут выглядеть одинаково. Таким образом, вы все равно должны использовать расширения имени файла, и это хорошо, когда используется там, где это уместно.