什么是“ exe文件”等效?


47

我不知道确切的可执行文件扩展名是什么。是.deb还是.tar.gz


13
不是答案,而是想在LINUX中添加所有内容是一个文件,因此将扩展名为.exe不再重要。
atenz

15
@tijybba的“一切皆文件”的设计理念是完全无关的,以.exe不被需要对本地的可执行文件扩展名。前者解释了内容/dev; 后者是因为具有执行权限,并且依赖检查文件内部以确定文件的类型。
卡根

@ Eliah Kagan-这只是一个基本信息,因为在Windows扩展中执行是必需的,而在Linux中则不是,就可执行权限而言,它几乎不需要了解Sudo的知识-用户访问和底层安全性问题,我猜想有人会在后面的部分中澄清答案,如果根本需要,这就是为什么我将其发布为评论而不是答案。
atenz

4
@tijybba但是,“一切”作为文件确实与该问题的主题无关,不是吗?
伊利亚·卡根

2
我想我误读了那个有问题的部分,它说“ Ubuntu中有什么exe文件?”,我认为是Executable,但是现在有了您的热心帮助,它似乎意味着“ Ubuntu中有什么.exe文件?”。如果它非常不合适,请告诉我,我将很高兴删除它。(错误是很好的学习经历:D)。
atenz

Answers:


41

Windows中没有像“ .exe”文件那样的标准文件扩展名。

在Linux上,几乎任何文件都可以执行。文件结尾只是(但不一定)描述“执行”文件的方式或方式。

例如,shell脚本以.sh结尾,并通过bash shell“执行”。

在您的问题中,您需要.deb和.tar.gz。.deb文件会在您的系统上安装软件(请注意!),. tar.gz文件是一个压缩文件,如.zip,您可以从中了解视窗。


1
因此,.deb是一个.exe文件!
user54905 2012年

13
@Nick,.deb文件往往不是可执行文件:它们既不是ELF脚本也不是“ she-bang”脚本,并且不太可能在binfmt中注册。即使拥有可执行权限,内核也不知道如何处理它们。可以注册您的文件资源管理器以使用某个基于扩展名的特定应用程序打开文件的事实与它们的可执行性无关(就文件许可或内核二进制格式执行而言)。
布鲁诺

4
.deb文件也更像.zip,然后更像.exe。关键是.deb 不会自行执行,而是由其他一些应用程序提取,解释和安装。
拉斐尔·西拉克(RufałCieślak)2012年

5
另一个应用程序通常是软件中心,它可以兼作安装程序。与Windows相比,Linux对扩展的依赖性较小,因此Linux根据权限而不是扩展来决定可执行性。
tyjkenn 2012年

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 开头的文件都只是一个脚本。shebang之后的路径是需要解析脚本的程序(可执行文件)的路径,假定已使用设置了文件的执行许可权chmod a+x filename

因此,请回答您的原始问题,没有扩展名,或者很少是,.elf或者.bin

这已成为Community Wiki,因此任何人都可以添加一个条目。


2
我从未见过.elf扩展名,但经常看到.bin扩展名。
Calmarius 2014年

1
虽然其他答案都集中在“任何”文件都可以是可执行文件这一事实上,但这个答案确实让人难以忘怀,而说“任何文件”可以是可执行文件并不是真正意义上的知识或真理,而是例外。我可以将Windows上的任何文件重命名为.exe,它将尝试执行该文件,但不一定能正常工作,在Linux中是一样的,如果不打算执行该文件,它将无法工作...我的问题很多时候下载的是软件包,并不是真正了解如何开始,而是rtfm。
TrySpace 2015年

您应该添加.bin扩展名(与Windows等效于.exe)
Dani-Br

@ Dani-Br这是社区Wiki帖子,表示欢迎其他人对其进行编辑,并且您有足够的声誉进行编辑(在101)。我现在添加了.bin。
ζ--

它不是扩展名,但对我很有用,我知道Windows上的“ PE”格式等效于Linux上的“ ELF”格式
会计م

23

在UNIX / Linux中,可执行文件的概念与Windows不同。

视窗

任何以可执行文件结尾.exe.com变为可执行文件的东西。

Linux / Unix

每个文件都有一个可执行位,因此与Windows不同,任何文件都可以执行。要查看文件是否可执行,可以检查其属性(“权限”选项卡),甚至可以在终端中看到它们的标记(它们都标记有*)。

甚至文本文件(如Shell脚本)也可以设置其可执行位,并作为一个文件运行。


4
同样值得补充的是,对于文本文件,文件#!/bin/bash开头的shebang(例如)设置了执行该文件的程序。
jackweirdy 2012年

用户,组和其他用户存在单独的可执行位。这些位的使用会限制谁可以执行程序。SUID和SGID还有其他位,以使程序以拥有该文件的用户或组身份运行。
BillThor 2012年

上面有一些错误:2)“每个文件都有一个可执行位”:有三个可执行位(所有者,组和其他),因此一个可以允许自己执行,而其他不能执行。还有一个setuid位用于“以所有者身份执行”和setgid“以组身份执行”。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

如果您恰巧在UNIX机器上放着一个Windows程序,它甚至足够聪明,可以正确地识别Windows程序:

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

当它无法弄清文件是什么(但是能够打开它)时,它将其称为数据:

$ file myrandom
myrandom: data

1
不是真正的答案,而是好的“答案”
dlin 2012年

11

Linux上的文件执行与文件名或扩展名根本无关。只要文件由内核binfmt机制处理(并设置了可执行权限),任何文件都可以执行。

可执行文件最常见的格式是ELF,尽管可以编译某些内核以支持旧a.out格式。(有关完整的技术细节,请参见binfmt_elf.c。)

另一个常见的机制是“ Shebang”系统,由负责处理binfmt_script,该系统#!/path/to/interpreter在文件的开头查找。

binfmt_misc允许注册其他处理程序,如此处所述

如果您愿意做一些内核编程,甚至可以编写自己的

尽管没有直接关系,但是该file命令应该告诉您文件是ELF可执行文件还是其他文件。

命名约定与文件的可执行状态无关(除非用于binfmt_misc注册)。它们只是约定而已。通常,.exe在Linux上找到的文件可以是mono应用程序,其.exe扩展名来自Windows / .Net。

当您要“运行”文件时,可能发生的另一方面是使文件浏览器工具可以使用注册扩展名来启动将打开这些文件的程序。例如.txt,如果双击.tar.gz.deb,就会发生这种情况:这些文件既不是可执行文件,也不是执行文件,但是您双击所用的文件将选择启动哪个可执行文件来打开这些文件。


我认为这是更好的答案之一的更好的评论。
ζ--

@ObsessiveFOSS,但这值得一票吗?在我生气之前,没有人提到单声道。无论如何,这里没有答案真正地谈论Linux可执行文件的真正工作方式(请参阅我对binfmt的评论)。
布鲁诺

我没有投票。我觉得投票应该保持原样。
–ζ

@ObsessiveFOSS,没问题。我还注意到,自从我回答问题以来,该问题已被编辑,从而改变了它的含义(我最初将其理解为“我有一个exe文件,我无法运行...”),并使回答减少了确实相关。
布鲁诺

好。没问题。
ζ--

2

在Windows中,.exe文件是计算机文件,以扩展名“ .exe”结尾,通常称为可执行文件。当您单击一个exe文件时,内置的例程会自动执行可将多项功能设置为动态的代码。Exe文件通常用于在Windows操作系统中安装文件。

此外,您还有.tar文件,通常称为压缩文件。Linux版本(例如Ubuntu)在各种软件发行版中都具有突出的功能,并且大多数软件源代码都以tar.gz格式提供。由此可以假定tar。 gz是众所周知的.tar格式的一种形式,用于存档。

另一方面,在Ubuntu中,.deb文件格式的行为更类似于Windows中的.exe文件。当您打开它时,软件中心会处理它的代码并安装其中包含的程序,例如可执行文件。

即使您仍可以从源格式(tar.gz)安装软件和软件包,但最适合安装软件的格式是.deb。它包含的所有应用程序实际上都是.deb文件。通常,在linux中,几乎每种文件格式(包括.deb和tar.gz以及众所周知的bash文件.sh)都可以充当可执行文件,因此您可以安装软件包或软件。


5
我宁愿将Debian衍生系统上的.deb文件与Microsoft Installer的.msi文件进行比较……
MvG 2012年

那是对的!:)
dlin 2012年

2

Windows中没有等效于exe的文件扩展名来表示文件可执行。相反,可执行文件可以具有任何扩展名,并且通常根本没有扩展名

的Linux / Unix使用文件权限来表示,如果一个文件可以被执行。具体来说,有一个执行文件许可权,它告诉系统允许执行此文件。但是,缺少此权限并不表示该文件不是可执行文件。只是相关用户不允许尝试执行它。同样,此权限的存在并不总是表示该文件是有效的可执行文件。

Linux / Unix具有称为ELF的二进制可执行文件格式,该格式等效于通常带有扩展名.exe的PE(Windows)或MZ / NE(DOS)二进制可执行文件格式。

但是,取决于外壳程序,其他类型的文件也可以执行。通常,如果您尝试执行系统无法识别为二进制可执行文件(例如ELF格式)的文件,则该文件将由当前的Shell解释器进行解释。这实现了与Windows或DOS中的批处理文件相同的效果,但再次是,扩展名不能标识其类型或执行方式。

Shell文件可以选择以hashbang开头(文件中的前两个字符#!后跟解释器的路径),在这种情况下,可以使用当前的Shell解释器而不是使用当前的Shell解释器来解释文件的其余部分,而是可以启动执行文件。因此,您可以使用任何已解释的语言编写脚本,并在尝试执行脚本时仍使用正确的解释器运行脚本。


哇,我也差一点回答。看日期,这个帖子是恐龙。
Tamsyn Michael

1

EXE和DLL文件是可移植的可执行文件。这些基于PE / COFF Unix文件。

阅读http://en.wikipedia.org/wiki/Portable_Executable以获得更多信息。

在Ubuntu中,您没有可执行文件的特定扩展名。这些通常是文件,它们也以它们相关的应用程序命名。

重要的因素是这些文件已设置了可执行位。如果您使用的是彩色端子,则使用列出时,它们将是另一种颜色ls

在UNIX文件系统中,二进制可执行文件通常存储在自己的位置。

  1. / bin(核心二进制文件)
  2. / sbin(系统二进制文件)
  3. / usr / bin(应用程序二进制文件)

而其他应用程序资源可能存储在/ usr / lib /或/ usr / share /

一个deb文件更正确地对应于Windows中的一个msi文件(即软件包安装程序)。

通常tar.gz文件或bz2文件包含可用于构建应用程序的源代码


0

.exe / .com文件的Ubuntu equallant是无扩展名的文件,通常为了方便起见,向其中添加了一些扩展名(如.bin,.run等)

.bat文件(几乎所有文件)有几种选择,最受欢迎的是.sh

.deb只是一个带有debian standerds的存档二进制文件(类似于Windows中的.msi)

.tar.gz只是ubuntu中使用的一种通用归档格式


0

任何文件名都可以设置为可执行文件,而不管扩展名如何,但是文件需要设置适当的权限。可以通过右键单击Nautilus中的文件,单击“属性”,然后选中“允许将文件作为程序执行”复选框来授予权限:

菜单项显示执行:-复选框-允许将文件作为程序执行


我想指出的是,任何文件名都可以执行,而不是任何文件类型,因为短语“任何文件”似乎都表明了这一点。为了清晰起见进行编辑。
年长者怪杰

-3

.deb用于Linux和TAR归档文件的Debian软件包,使用标准GNU zip(gzip)压缩算法压缩;包含一个或多个压缩文件;通常在Unix操作系统上用于打包文件,程序和安装程序。

注意:必须先解压缩TAR.GZ文件,然后使用TAR实用程序将其扩展。它们包括.TAR和.GZ文件类型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.