什么是“exe文件”的等价物?

use*_*905 67 executable

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

nan*_*rad 100

Linux 扩展 Windows 等效 简短的介绍
.so,.o .dll 可以在运行时加载的对象(类似于 DLL)
。一种 .lib 静态库
[无], .elf(稀有), .exe、.com(罕见) Linux 可执行文件
.bin(罕见)
.sh 。蝙蝠 外壳脚本
。可执行程序 。可执行程序 Mono 应用程序,Wine 应用程序
.deb .msi Debian/Ubuntu 发行版的安装包
(尽管 .deb 对依赖项和存储库的本机支持要强大得多)。请注意,.deb 实际上是一个带有特殊控制文件、特殊文件顺序和不同扩展名的 .tar 存档。
.rpm .msi RedHat/CentOS 版本的安装程序包。
.tar.gz、.tar、.gz 。压缩 可以包含程序或任何其他数据的压缩文件,如图像、文档等
.ko .sys 驱动程序和内核模块被加载到 Linux 内核中,并且比其他程序具有更多的硬件访问权限。
.sh、.php、.py 等 .bat、.cmd、.vbs、 Linux 能够运行它有解释器的任何文件。
.js 文件顶部名为 shebang 的一行指定了运行文件的解释器。
Windows 仅通过 Windows 脚本主机 (WSH) 支持 .bat 和 .cmd 文件作为批处理文件,以及 .vbs (vbscript) 和 .js (JScript,不要与 JavaScript 混淆)。

  • 虽然其他答案侧重于“任何”文件可以是可执行文件这一事实,但这个答案确实一针见血,而说“任何东西”都可以是可执行文件并不是真正的信息丰富或真实,而是例外。我可以将 Windows 上的任何文件重命名为 .exe,它会尝试执行它,但不一定有效,在 linux 中它是相同的,如果它不打算执行,它就不会工作......我的问题很多时候是下载一个包,并没有真正理解从什么开始,当然,rtfm。 (3认同)
  • 我从未见过 .elf 扩展名,但经常看到 .bin 扩展名。 (2认同)

Eve*_*mbH 55

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

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

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

在您的问题中,您要求 .deb 和 .tar.gz 好吧,.deb 文件会在您的系统上安装软件(请小心!)而 .tar.gz 文件是一个像 .zip 一样的压缩文件,您可以从中了解视窗。

  • `.deb` 更像是一个 `.msi` 文件而不是一个 `.exe` 文件。 (36认同)
  • @Nick,`.deb` 文件往往不是可执行文件:它们既不是 ELF 也不是“she-bang”脚本,它们不太可能在 binfmt 中注册。即使有可执行权限,内核也不知道如何处理它们。您的文件浏览器可以注册以使用基于扩展名的特定应用程序打开文件这一事实与它们的可执行性无关(就文件权限或内核二进制格式执行而言)。 (14认同)
  • .deb 文件也更像是 .zip,然后更像是 .exe。关键是 .deb **不执行自身**,它是由其他一些应用程序提取、解释和安装的。 (5认同)
  • 另一个应用程序通常是软件中心,它兼作安装程序。**与 Windows 相比,Linux 对扩展的依赖较少**,因此基于权限而不是扩展来决定可执行性。 (5认同)

Nem*_*emo 24

unix/linux 中可执行文件的概念与 Windows 不同。

视窗

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

Linux/Unix

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

即使是文本文件(如 shell 脚本)也可以设置它们的可执行位,并作为一个运行。

  • 还值得补充的是,在文本文件的情况下,文件开头的shebang(例如`#!/bin/bash`)设置哪个程序执行该文件。 (4认同)

小智 16

要了解 UNIX 操作系统认为特定文件的类型是什么,请使用 file 命令:

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, for OpenBSD, statically linked, stripped
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我给出了程序“ls”的路径,你可以用你的文件路径替换。

脚本文件如下所示:

$ file script.sh
script.sh: Bourne-Again shell script text
Run Code Online (Sandbox Code Playgroud)

一个随机文本文件:

$ file textfile
textfile: ASCII text
Run Code Online (Sandbox Code Playgroud)

一个存档文件:

$ file rsync-3.0.6.tar.gz
rsync-3.0.6.tar.gz: gzip compressed data, from Unix
Run Code Online (Sandbox Code Playgroud)

如果您的 UNIX 机器上有一个 Windows 程序,它甚至足以正确识别 Windows 程序:

$ file FMZsetup.exe
FMZsetup.exe: MS-DOS executable (EXE), OS/2 or Windows
Run Code Online (Sandbox Code Playgroud)

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

$ file myrandom
myrandom: data
Run Code Online (Sandbox Code Playgroud)


Bru*_*uno 13

Linux 上的文件执行与文件名或扩展名完全无关。任何文件都可能被执行,前提是它由内核的binfmt机制处理(并且设置了其可执行权限)。

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

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

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

如果您喜欢进行一些内核编程,您甚至可以编写自己的.

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

命名约定与文件的可执行状态无关(除非用于binfmt_misc注册)。他们只是约定俗成。通常,.exe在 Linux 上找到的文件可能是单声道应用程序,将.exe扩展名作为来自 Windows/.Net 世界的约定。

当您想要“运行”文件时可能发生的另一个方面是使用文件资源管理器工具,您可以使用注册扩展来启动将打开这些文件的程序。这是会发生什么,如果你双击一个.txt.tar.gz或者.deb,例如:文件不是可执行文件,也没有执行,而是你用什么双击选择的启动来打开这些文件,其中的可执行文件。