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