Виконання файлу в 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
, наприклад: файли не виконуються і не виконуються, але те, що ви використовуєте для подвійного клацання, вибирає, який виконуваний файл для запуску відкривати ці файли.