Виконання файлу в Linux зовсім не пов'язане з ім'ям файлу або розширенням. Будь-який файл потенційно може бути виконаний за умови, що ним обробляється binfmtмеханізм ядра (і встановлені його виконавчі права).
Найпоширеніший формат для виконуваного файлу - ELF , хоча деякі ядра можуть бути складені для підтримки старого a.outформату. (Для отримання повної технічної інформації, binfmt_elf.cде їх шукати.)
Ще один поширений механізм - система "Шебанг" , якою керує binfmt_script, яка шукає #!/path/to/interpreterна початку файлу.
binfmt_miscдозволяє здійснювати реєстрацію інших обробників, як це зафіксовано тут .
Якщо ви хочете зробити трохи програмування ядра, ви навіть можете написати своє .
Хоча це не пов'язане безпосередньо, fileкоманда повинна сказати вам, чи є файлом виконуваний файл ELF чи щось інше.
Конвенція про іменування не має нічого спільного з статусом файлу, що виконується (крім випадків, коли він використовується для binfmt_miscреєстрації). Вони просто умовності. Як правило, .exeфайл, знайдений в Linux, може бути моно-додатком , отримуючи .exeрозширення як умовне позначення, що надходить із світу Windows / .Net.
Інший аспект, який може статися, коли ви хочете "запустити" файл, - це мати інструмент провідника файлів, який ви використовуєте розширення реєстру, щоб мати змогу запустити програму, яка відкриє ці файли. Це може статися, якщо ви двічі клацніть на a .txt, .tar.gzабо .deb, наприклад: файли не виконуються і не виконуються, але те, що ви використовуєте для подвійного клацання, вибирає, який виконуваний файл для запуску відкривати ці файли.