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