Что эквивалентно «exe-файлу»?

47

Я не знаю, каково точное расширение исполняемого файла. Это .debили .tar.gz?

user54905
источник
13
Не ответ, но я хотел бы добавить, что ВСЕ в LINUX - это ФАЙЛ, поэтому наличие расширений в виде .exe никогда не имеет значения.
atenz
15
@tijybba Философия дизайна "все - это файл" совершенно не связана с .exeрасширениями, которые не нужны для собственных исполняемых файлов. Первый объясняет содержание /dev; последнее связано с разрешениями на выполнение и проверкой внутренней части файла, чтобы определить, какой это тип файла.
Элия ​​Каган
@ Eliah Kagan - Это была просто базовая информация, так как в Windows расширение необходимо для выполнения, ну, в Linux это не так, что касается разрешений для исполняемых файлов , оно требует немного больше ноу-хау о доступе пользователя Sudo и проблем безопасности Underlaid , который, как я догадался, кто-то уточнит в ответе в качестве его последней части, если вообще понадобится, вот почему я разместил его как комментарий, а не как ответ.
Atenz
4
@tijybba Но «все», будучи файлом, не имеет ничего общего с темой этого вопроса, не так ли?
Элия ​​Каган
2
Я полагаю, что я неправильно прочитал эту часть, в которой говорится «что такое exe- файл в Ubuntu?», Я подумал , что это исполняемый файл , но теперь с вашей нетерпеливой помощью кажется, что это означает «что такое exe- файл в Ubuntu?». Если это крайне неуместно, дайте мне знать, что я был бы рад удалить его (ошибки - большой опыт обучения: D).
Atenz

Ответы:

42

В Windows нет стандартного File-Extention, подобного файлу ".exe".

В Linux практически любой файл может быть исполняемым. Окончание файла просто описывает (но не обязательно), что или как файл «исполняется».

Например, скрипт оболочки заканчивается на .sh и «выполняется» через оболочку bash.

В своем вопросе вы спрашиваете .deb и .tar.gz. Хорошо. Файл .deb устанавливает программное обеспечение в вашей системе (пожалуйста, будьте осторожны!), А файл .tar.gz представляет собой сжатый файл, такой как .zip, который вы могли бы узнать по Окна.

rechengehirn
источник
1
Итак, .deb - это файл .exe!
user54905
13
@ Ник, .debфайлы, как правило, НЕ являются исполняемыми файлами: они не являются ни ELF, ни сценариями "she-bang", и они вряд ли будут зарегистрированы в binfmt. Даже с исполняемыми разрешениями ядро ​​не будет знать, что с ними делать. Тот факт, что ваш файловый менеджер может быть зарегистрирован для открытия файлов в определенном приложении на основе расширения, не имеет ничего общего с их исполняемостью (с точки зрения разрешения файла или с точки зрения выполнения двоичного формата ядра).
Бруно
4
Файл .deb также больше похож на .zip, чем на .exe. Дело в том, что .deb не выполняется сам по себе , он извлекается, интерпретируется и устанавливается другим приложением.
Rafał Cieślak
5
Это другое приложение, обычно являющееся Центром программного обеспечения, который также служит установщиком. Linux меньше зависит от расширений по сравнению с Windows и, следовательно, решает возможность выполнения на основе разрешений, а не расширений.
Tyjkenn
33
.debбольше похоже на .msiфайл, чем .exeфайл.
детально
79

Я бы суммировал систему следующим образом:

Linux extension    |Windows Equivalent    |Short description
------------------------------------------------------------
.so, .o            | .dll                 | Object that can be loaded at runtime (Similar to DLL)
.a                 | .lib                 | Static library
[none], .elf(rare),| .exe, .com(rare)     | Linux executables
  .bin(rare)       |                      |
.sh                | .bat                 | Shell script
.exe               | .exe                 | Mono application, Wine application
.deb               | .msi                 | Installer package for Debian/Ubuntu releases
                   |                      |   (Though .deb is much more powerful with 
                   |                      |   native support for dependencies and repos). Note that .deb is actually a .ar archive with a special control file, a special file order, and a different extension.
.rpm               | .msi                 | Installer package for RedHat/CentOS releases.
.tar.gz, .tar, .gz | .zip                 | Compressed files that can contain a program or any other data, like images, documents, etc
.ko                | .sys                 | Drivers and kernel modules are loaded into the Linux kernel and have more hardware access than other programs.
.sh, .php, .py, etc| .bat, .cmd, .vbs,    | Linux is capable of running any file that it has an interpreter for. 
                   |   .js                |   A line at the top of the file called the shebang specifies what interpreter to run the file with. 
                   |                      |   Windows only supports .bat and .cmd files as Batch files, and .vbs (vbscript) and .js (JScript, not to be confused with JavaScript) via the Windows Script Host (WSH).

Любой файл, начинающийся с #!(называемый shebang или hashbang) в первой строке, является просто сценарием. Путь после шебанга - это путь к программе (исполняемому файлу), которая должна проанализировать скрипт, при условии, что для файла было установлено разрешение на выполнение chmod a+x filename.

Поэтому, ответьте на свой оригинальный вопрос, расширения нет, или редко, это .elfили .bin.

Это сделано вики-сообществом, поэтому любой может добавить запись.

ζ--
источник
2
Я никогда не видел расширение .elf, но видел расширение .bin довольно часто.
Кальмарий
1
В то время как другие ответы сосредоточены на том факте, что «любой» файл может быть исполняемым, этот ответ действительно бьет по голове, в то время как высказывание «все» может быть исполняемым, на самом деле не информативно и не правда, а скорее исключительно. Я мог бы переименовать любой файл в Windows в .exe, и он попытается выполнить его, но не обязательно будет работать, в Linux он такой же, если он не предназначен для выполнения, он не будет работать ... Моя проблема много раз загружает пакет, и не совсем понимая, с чего начать, но, конечно, rtfm.
TrySpace
Вы должны добавить расширение .bin (как Windows, эквивалентное .exe)
Dani-Br
@ Dani-Br Это сообщение вики сообщества, означающее, что другие могут редактировать его, и у вас достаточно репутации, чтобы сделать это (на 101). Я добавил .bin на данный момент.
ζ--
Это не расширение, но для меня было полезно узнать, что формат "PE" в Windows эквивалентен формату "ELF" в Linux
Бухгалтер م
23

Концепция исполняемого файла отличается в Unix / Linux от Windows.

Windows

Все, что заканчивается .exeили .comстановится исполняемым файлом.

Linux / Unix

Каждый файл имеет исполняемый бит, поэтому любой файл может быть выполнен, в отличие от Windows. Чтобы увидеть, является ли файл исполняемым, вы можете проверить его свойства (вкладка «Разрешения») или даже увидеть их помеченные в терминале (все они отмечены *).

Даже текстовые файлы (например, сценарии оболочки) могут иметь свои исполняемые биты и запускаться как единое целое.

Nemo
источник
4
Также стоит добавить, что в случае текстовых файлов шебанг ( #!/bin/bashнапример) в начале файла устанавливает, какая программа выполняет файл.
Jackweirdy
Отдельные исполняемые биты существуют для пользователя, группы и других. Использование этих битов может ограничить, кто может выполнять программу. Существуют дополнительные биты для SUID и SGID, чтобы заставить программу работать от имени пользователя или группы, которой принадлежит файл.
BillThor
Выше приведены некоторые неточности: 2) «у каждого файла есть исполняемый бит»: есть три исполняемых бита (владелец, группа и другие), поэтому один может разрешить выполнение файла самому себе, но не другим. Также есть бит setuid для «execute-as-owner» и setgid «execute-as-group». 2) «любой файл может быть выполнен»: не так. биты разрешения являются обязательным, но недостаточным условием для успешного выполнения файла. Немедленный сбой произойдет, например, если файл на самом деле не может быть загружен и запущен (Ссылка: магические числа файлов man magic, ELF man elfи строка хэш-бэнг man execve)
arielf
16

Чтобы узнать, что операционная система UNIX думает о типе конкретного файла, вы используете команду file:

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, for OpenBSD, statically linked, stripped

В приведенном выше примере я указываю путь к программе 'ls', вы должны заменить путь к вашему файлу.

Файл сценария будет выглядеть так:

$ file script.sh
script.sh: Bourne-Again shell script text

Случайный текстовый файл:

$ file textfile
textfile: ASCII text

Архивный файл:

$ file rsync-3.0.6.tar.gz
rsync-3.0.6.tar.gz: gzip compressed data, from Unix

Он даже достаточно умен, чтобы правильно идентифицировать программу Windows, если у вас есть одна, лежащая на вашем компьютере с UNIX:

$ file FMZsetup.exe
FMZsetup.exe: MS-DOS executable (EXE), OS/2 or Windows

И когда он не может понять, что это за файл (но может открыть его), он называет это данными:

$ file myrandom
myrandom: data
Дон симон
источник
1
Не совсем ответ, но хорошая
сторона
11

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

Bruno
источник
Я думаю, что это лучше в качестве комментария на стороне одного из наиболее содержательных ответов.
ζ--
@ObsessiveFOSS, но заслуживает ли он снижения? Никто не упомянул моно до моего ответа. Никакой ответ здесь действительно не говорит о том, как на самом деле работают исполняемые файлы Linux (см. Мой комментарий о binfmt в отношении принятого ответа).
Бруно
Я не понизил. Я чувствовал, что голосование должно остаться как есть.
ζ--
@ObsessiveFOSS, нет проблем. Я также заметил, что вопрос был отредактирован с тех пор, как я на него ответил, немного изменив его значение (изначально я понимал его как «У меня есть исполняемый файл, я не могу его запустить ...») и уменьшил свой ответ актуально действительно.
Бруно
ХОРОШО. Нет проблем.
ζ--
2

В Windows .exe-файл - это компьютерный файл, который заканчивается расширением «.exe», которое обычно называют исполняемым файлом. Когда вы нажимаете exe-файл, встроенная подпрограмма автоматически выполняет код, который может привести в движение несколько функций. EXE-файлы обычно используются для установки файлов в операционной системе Windows.

Кроме того, у вас есть файлы .tar, обычно известные как сжатые файлы. В версиях Linux, таких как Ubuntu, функции используются в различных дистрибутивах программного обеспечения, причем большая часть исходного кода программного обеспечения доступна в формате tar.gz. Из этого можно предположить, что tar. gz - это форма хорошо известного формата .tar, который используется для архивирования.

В Ubuntu, с другой стороны, формат файла .deb больше похож на файл .exe в windows. Когда вы открываете его, центр программного обеспечения обрабатывает его код и устанавливает содержащуюся в нем программу, такую ​​как исполняемый файл.

Даже если вы по-прежнему можете устанавливать программное обеспечение и пакеты из исходного формата (tar.gz), наиболее подходящим форматом для установки программного обеспечения является .deb. Возьмем, к примеру, Ubuntu Software Center; все приложения, которые он содержит, на самом деле являются файлами .deb. В целом, в linux почти каждый формат файла (включая .deb и tar.gz, а также хорошо известные файлы bash .sh) может вести себя как исполняемый файл, так что вы можете установить пакеты или программное обеспечение с этим.

Длин
источник
5
Я бы лучше сравнил файлы .deb в системах, производных от Debian, с файлами MSI для установщика Microsoft ...
MvG
это верно! :)
Длин
2

В Windows нет эквивалента расширению exe, указывающему на то, что файл является исполняемым. Вместо этого исполняемые файлы могут иметь любое расширение и, как правило, вообще не иметь расширения .

Linux / Unix использует права доступа к файлам , чтобы указать , если файл может быть выполнен. В частности, есть разрешение на выполнение файла, которое сообщает системе, что этот файл разрешено выполнять. Однако отсутствие этого разрешения не означает, что файл не является исполняемым; просто, что соответствующий пользователь не имеет права пытаться выполнить его. Точно так же наличие этого разрешения не всегда указывает на то, что файл является допустимым исполняемым файлом.

Linux / Unix имеет двоичный формат исполняемых файлов, называемый ELF, который эквивалентен двоичным исполняемым форматам PE (Windows) или MZ / NE (DOS), которые обычно имеют расширение .exe.

Тем не менее, другие типы файлов могут быть исполняемыми, в зависимости от оболочки. Как правило, если вы пытаетесь выполнить файл, который система не распознает как двоичный исполняемый файл (например, формат ELF), то он интерпретируется текущим интерпретатором оболочки. Это выполняет тот же эффект, что и пакетные файлы в Windows или DOS, за исключением того, что опять-таки это не расширение, которое определяет его тип или способ его выполнения.

Файлы оболочки могут необязательно начинаться с хеш-бенга (первые два символа в файле #!сопровождаются путем к интерпретатору), и в этом случае вместо интерпретации остальной части файла с помощью текущего интерпретатора оболочки он может запустить альтернативную оболочку или интерпретатор для выполнить файл. Таким образом, вы можете иметь сценарий на любом интерпретируемом языке и при этом запускать его с правильным интерпретатором при попытке выполнения сценария.

thomasrutter
источник
Ух, я тоже почти ответил на это. Посмотрите на дату, этот пост является динозавром.
Тамсин Михаил
1

Файлы EXE и DLL являются переносимыми исполняемыми файлами. Они основаны на Unix-файлах PE / COFF.

Прочитайте http://en.wikipedia.org/wiki/Portable_Executable для получения дополнительной информации.

В Ubuntu у вас нет определенного расширения для исполняемого файла. Обычно это файлы, которые названы в честь приложения, к которому они относятся.

Важным фактором является то, что в этих файлах установлен исполняемый бит. Если у вас есть цветной терминал, вы заметите, что это другой цвет при использовании ls.

В файловой системе Unix бинарные исполняемые файлы обычно хранятся в собственном месте.

  1. / bin (основные двоичные файлы)
  2. / sbin (системные двоичные файлы)
  3. / usr / bin (двоичные файлы приложения)

тогда как другие ресурсы приложения могут храниться в / usr / lib / или / usr / share /

Файл deb более корректно соответствует файлу msi в windows (то есть установщику пакета).

Обычно файлы tar.gz или bz2 содержат исходный код, из которого можно построить приложение

Мерлин
источник
0

Ubuntu, эквивалентный файлу .exe / .com, является файлом без расширения, обычно для удобства добавляются некоторые расширения, такие как .bin, .run и т. Д.

Существует несколько альтернатив для файла .bat (почти для всех файлов), наиболее популярным является .sh

.deb - это просто архив двоичных файлов (аналогично .msi в windows) с Debian Standerds

.tar.gz - это обычный формат архивации, используемый в Ubuntu.

Тахионы
источник
0

Любое имя файла может быть установлено на исполняемый файл независимо от расширения, но файл должен иметь соответствующий набор разрешений. Разрешение можно получить, щелкнув правой кнопкой мыши файл в Nautilus, выбрав Свойства и отметив флажок «Разрешить выполнение файла как программы»:

пункт меню, показывающий Выполнить: -checkbox- Разрешить выполнение файла как программы

Terrarian
источник
Я хотел бы отметить, что любое имя файла можно сделать исполняемым, а не файл любого типа, как, по-видимому, указывает фраза «Любой файл». редактирование для ясности.
Старейшина Гик
-3

.deb Debian Package для Linux и TAR архив, сжатый стандартным алгоритмом сжатия zu (gzip) GNU; содержит один или несколько сжатых файлов; обычно используется в операционных системах Unix для упаковки файлов, программ и установщиков.

ПРИМЕЧАНИЕ . Файлы TAR.GZ должны быть сначала распакованы, а затем расширены с помощью утилиты TAR. Они включают оба типа файлов .TAR и .GZ.

Шанмугасундхарам сельвадурай
источник