Was ist das Äquivalent einer "exe-Datei"?

47

Ich weiß nicht, wie genau die ausführbare Dateierweiterung lautet. Ist es .deboder .tar.gz?

user54905
quelle
13
Keine Antwort, möchte aber ALLES in LINUX hinzufügen, ist eine DATEI, so dass Erweiterungen wie .exe keine Rolle spielen.
Atenz
15
@tijybba Die Designphilosophie "Alles ist eine Datei" hat nichts mit .exeErweiterungen zu tun , die für native ausführbare Dateien nicht benötigt werden. Ersteres erklärt den Inhalt von /dev; Letzteres ist wegen ausführen Berechtigungen auf die Prüfung der innerhalb einer Datei und Vertrauen , um zu bestimmen , welche Art von Datei es sich handelt.
Eliah Kagan,
@ Eliah Kagan - Es war nur eine grundlegende Information, da für die Ausführung eine Windows-Erweiterung erforderlich ist. Unter Linux ist dies in Bezug auf die ausführbaren Berechtigungen nicht unbedingt erforderlich. Es sind nur wenige Kenntnisse über Sudo-Benutzerzugriff und unterlegte Sicherheitsbedenken erforderlich , von dem ich vermutete, dass jemand in der Antwort als letzter Teil klarstellen würde, falls dies überhaupt nötig ist, habe ich es als Kommentar gepostet und nicht als Antwort.
Atenz
4
@tijybba Aber "alles", was eine Datei ist, hat wirklich nichts mit dem Thema dieser Frage zu tun, oder?
Eliah Kagan
2
Ich denke , ich , dass ein Teil in Frage falsch verstanden, die sagt : „Was ist eine exe - Datei in Ubuntu ist?“, Ich als Executable , aber jetzt mit Ihrer eifrigen Hilfe scheint es , es bedeutete , „was ist eine EXE - Datei ist in Ubuntu?“. Wenn es sehr unangemessen ist, lass es mich wissen, ich würde es gerne löschen. (Fehler sind großartige Lernerfahrungen: D).
Atenz

Antworten:

42

Es gibt keine Standard-Dateierweiterung wie eine ".exe" -Datei in Windows.

Unter Linux kann fast jede Datei ausführbar sein. Die Dateiendung beschreibt nur (aber nicht unbedingt), was oder wie eine Datei "ausgeführt" wird.

Beispielsweise endet ein Shell-Skript mit .sh und wird über die Bash-Shell "ausgeführt".

In Ihrer Frage fragen Sie nach .deb und .tar.gz. Nun, die .deb-Datei installiert die Software auf Ihrem System Windows.

rechengehirn
quelle
1
Also, .deb ist eine .exe Datei!
user54905
13
@Nick, .debDateien sind in der Regel NICHT ausführbar: Sie sind weder ELF- noch "she-bang" -Skripte, und es ist unwahrscheinlich, dass sie bei binfmt registriert werden. Selbst mit ausführbaren Berechtigungen würde der Kernel nicht wissen, was er damit machen soll. Die Tatsache, dass Ihr Dateiexplorer für das Öffnen von Dateien mit einer bestimmten Anwendung basierend auf der Erweiterung registriert werden kann, hat nichts damit zu tun, dass sie ausführbar sind (im Hinblick auf die Dateiberechtigung oder im Hinblick auf die Ausführung im Kernel-Binärformat).
Bruno
4
Eine .deb-Datei ähnelt auch eher einer .zip-Datei als einer .exe-Datei. Der Punkt ist, dass .deb sich nicht von selbst ausführt , sondern von einer anderen Anwendung extrahiert, interpretiert und installiert wird.
Rafał Cieślak
5
Diese andere Anwendung ist normalerweise das Software Center, das gleichzeitig als Installationsprogramm fungiert. Linux ist im Vergleich zu Windows weniger abhängig von Erweiterungen und entscheidet daher über die Ausführbarkeit basierend auf Berechtigungen und nicht auf Erweiterungen.
Tyjkenn
33
.debist eher eine .msiDatei als eine .exeDatei.
Detly
79

Ich würde das System folgendermaßen zusammenfassen:

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).

Jede Datei, die #!in der ersten Zeile mit "shebang" oder "hashbang" beginnt , ist nur ein Skript. Der Pfad nach dem shebang ist ein Pfad zu dem Programm (ausführbar), das das Skript analysieren muss, vorausgesetzt, dass die Ausführungsberechtigung für die Datei mit gesetzt wurde chmod a+x filename.

Beantworten Sie daher Ihre ursprüngliche Frage, es gibt keine Erweiterung oder selten ist es .elfoder .bin.

Dieses Community-Wiki wurde erstellt, sodass jeder einen Eintrag hinzufügen kann.

ζ--
quelle
2
Ich habe die Erweiterung .elf noch nie gesehen, aber die Erweiterung .bin ziemlich oft gesehen.
Calmarius
1
Während sich die anderen Antworten auf die Tatsache konzentrieren, dass 'jede' Datei eine ausführbare Datei sein kann, trifft diese Antwort den Nagel auf den Kopf, während es nicht wirklich informativ oder wahr ist, zu sagen, dass 'alles' eine ausführbare Datei sein kann, sondern eher außergewöhnlich. Ich könnte jede Datei unter Windows in .exe umbenennen, und sie wird versuchen, sie auszuführen, aber nicht unbedingt funktionieren, unter Linux ist es dasselbe, wenn sie nicht ausgeführt werden soll, wird es nicht funktionieren ... Mein Problem Oft wird ein Paket heruntergeladen und nicht wirklich verstanden, was man anfangen soll, aber natürlich rtfm.
TrySpace
Sie sollten die Erweiterung .bin (als Windows-Entsprechung zu .exe) hinzufügen
Dani-Br
@ Dani-Br Dies ist ein Community-Wiki-Beitrag, das heißt, andere können ihn gerne bearbeiten, und Sie haben genug Reputation, um dies zu tun (bei 101). Ich habe jetzt .bin hinzugefügt.
ζ--
Es ist keine Erweiterung, aber es war nützlich für mich , dass die wissen , „PE“ Format unter Windows die äquivalent ist „ELF“ Format unter Linux gedacht
Accountant م
23

Das Konzept einer ausführbaren Datei unterscheidet sich in Unix / Linux von Windows.

Windows

Alles, was in einer ausführbaren Datei endet .exeoder .comzu einer solchen wird.

Linux / Unix

Jede Datei hat ein ausführbares Bit, sodass im Gegensatz zu Windows jede Datei ausgeführt werden kann. Um festzustellen, ob eine Datei ausführbar ist, können Sie ihre Eigenschaften überprüfen (Registerkarte Berechtigungen) oder sie sogar im Terminal anzeigen (alle sind mit einem * gekennzeichnet).

Sogar für Textdateien (wie Shell-Skripte) können die ausführbaren Bits festgelegt und als eine ausgeführt werden.

Nemo
quelle
4
es lohnt sich auch hinzuzufügen, dass bei textdateien der shebang ( #!/bin/bashzum beispiel) am anfang der datei festlegt, welches programm die datei ausführt.
Jackweirdy
Es gibt separate ausführbare Bits für Benutzer, Gruppe und andere. Die Verwendung dieser Bits kann einschränken, wer das Programm ausführen kann. Für SUID und SGID sind zusätzliche Bits vorhanden, damit das Programm als der Benutzer oder die Gruppe ausgeführt wird, der bzw. die die Datei besitzt.
BillThor
Es gibt oben einige Ungenauigkeiten: 2) "Jede Datei hat ein ausführbares Bit": Es gibt drei ausführbare Bits (Eigentümer, Gruppe und andere), so dass man sich erlauben kann, eine Datei auszuführen, andere jedoch nicht. Es gibt auch ein Setuid-Bit für "Als Eigentümer ausführen" und ein Setgid für "Als Gruppe ausführen". 2) "jede Datei kann ausgeführt werden": nicht so. Die Berechtigungsbits sind eine erforderliche, aber nicht ausreichende Bedingung, um eine Datei erfolgreich auszuführen. Ein sofortiger Fehler tritt zum Beispiel auf, wenn die Datei nicht geladen und ausgeführt werden kann (Ref: Datei magische Zahlen man magic, ELF man elfund Hash-Bang-Zeile man execve)
Arielf
16

Um herauszufinden, was ein UNIX-Betriebssystem für einen bestimmten Dateityp hält, verwenden Sie den Befehl file:

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

Im obigen Beispiel gebe ich den Pfad zum Programm 'ls' an, den Sie durch den Pfad Ihrer Datei ersetzen würden.

Eine Skriptdatei würde folgendermaßen aussehen:

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

Eine zufällige Textdatei:

$ file textfile
textfile: ASCII text

Eine Archivdatei:

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

Es ist sogar klug genug, um ein Windows-Programm richtig zu identifizieren, falls Sie eines auf Ihrer UNIX-Box herumliegen haben:

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

Und wenn es nicht herausfinden kann, was eine Datei ist (aber sie öffnen kann), nennt es sie Daten:

$ file myrandom
myrandom: data
Don Simon
quelle
1
Keine wirkliche Antwort, aber eine gute Neben- "Antwort"
dlin
11

Die Dateiausführung unter Linux hängt überhaupt nicht mit dem Dateinamen oder der Dateierweiterung zusammen. Jede Datei kann möglicherweise ausgeführt werden, vorausgesetzt, sie wird vom binfmtMechanismus des Kernels verarbeitet (und die ausführbaren Berechtigungen sind festgelegt).

Das gebräuchlichste Format für ausführbare Dateien ist ELF , obwohl einige Kernel zur Unterstützung des alten a.outFormats kompiliert werden können . (Vollständige technische Details finden Sie binfmt_elf.chier.)

Ein weiterer üblicher Mechanismus ist das "Shebang" -System, binfmt_scriptdas #!/path/to/interpreteram Anfang der Datei gesucht wird.

binfmt_miscermöglicht die Registrierung anderer Handler, wie hier dokumentiert .

Wenn Sie Lust auf ein bisschen Kernel-Programmierung haben, können Sie sogar Ihre eigene schreiben .

Obwohl nicht direkt verwandt, sollte der fileBefehl Ihnen mitteilen, ob eine Datei eine ELF-ausführbare Datei oder etwas anderes ist.

Die Namenskonvention hat nichts mit dem ausführbaren Status einer Datei zu tun (außer wenn sie für die binfmt_miscRegistrierung verwendet wird). Das sind nur Konventionen. In der Regel handelt es sich bei einer .exeunter Linux gefundenen Datei um eine Mono-Anwendung , deren .exeErweiterung als Konvention aus der Windows / .Net-Welt stammt.

Der andere Aspekt, der auftreten kann, wenn Sie eine Datei "ausführen" möchten, besteht darin, über das Dateiexplorer-Tool zu verfügen, das Sie mit Registererweiterungen verwenden, um ein Programm starten zu können, mit dem diese Dateien geöffnet werden. Dies ist , was auf ein Doppelklick , wenn Sie passieren würde .txt, .tar.gzoder .deb, zum Beispiel: Die Dateien sind nicht ausführbaren Dateien noch ausgeführt, aber was Sie verwenden , wählt einen Doppelklick auf die ausführbare Datei zu starten , um diese Dateien zu öffnen.

Bruno
quelle
Ich denke, das ist besser als Kommentar neben einer der umfassenderen Antworten.
ζ--
@ObsessiveFOSS, aber verdient es eine Ablehnung? Niemand hatte Mono vor meiner Answe erwähnt. Keine Antwort hier spricht wirklich davon, wie ausführbare Linux-Dateien wirklich funktionieren (siehe meinen Kommentar zu binfmt zur akzeptierten Antwort).
Bruno
Ich habe nicht abgelehnt. Ich hatte das Gefühl, dass die Abstimmung so bleiben sollte wie sie ist.
ζ--
@ObsessiveFOSS, kein Problem. Mir ist auch aufgefallen, dass die Frage bearbeitet wurde, seit ich sie beantwortet habe. Dabei hat sich ihre Bedeutung ein wenig geändert (ich habe sie anfangs als "Ich habe eine exe-Datei, ich kann sie nicht ausführen ..." verstanden), und ich habe weniger geantwortet in der Tat relevant.
Bruno
OKAY. Kein Problem.
ζ--
2

In Windows ist eine .exe-Datei eine Computerdatei, die mit der Erweiterung ".exe" endet, die üblicherweise als ausführbare Datei bezeichnet wird. Wenn man auf eine exe-Datei klickt, führt eine eingebaute Routine automatisch Code aus, der mehrere Funktionen in Gang setzen kann. Exe-Dateien werden normalerweise zum Installieren von Dateien im Windows-Betriebssystem verwendet.

Darüber hinaus verfügen Sie über .tar-Dateien, die im Allgemeinen als komprimierte Dateien bezeichnet werden. Linux-Versionen wie Ubuntu verwenden häufig Funktionen in verschiedenen Software-Distributionen, wobei die meisten Software-Quellcodes im tar.gz-Format zur Verfügung gestellt werden. gz ist eine Form des bekannten .tar-Formats, das zur Archivierung verwendet wird.

In Ubuntu ist das .deb-Dateiformat dasjenige, das sich eher wie die .exe-Datei in Windows verhält. Wenn Sie es öffnen, verarbeitet das Software Center den Code und installiert das darin enthaltene Programm, z. B. eine ausführbare Datei.

Obwohl Sie weiterhin Software und Pakete aus dem Quellformat (tar.gz) installieren können, ist das .deb one-Format das am besten geeignete Format für die Installation von Software. Nehmen Sie als Beispiel das Ubuntu Software Center. Alle darin enthaltenen Anwendungen sind tatsächlich .deb-Dateien. Im Allgemeinen kann sich unter Linux fast jedes Dateiformat (einschließlich .deb und tar.gz sowie der bekannten bash-Dateien .sh) als ausführbare Datei verhalten, sodass Sie kann damit Pakete oder Software installieren.

dlin
quelle
5
Ich würde lieber die .deb-Dateien auf von Debian abgeleiteten Systemen mit den .msi-Dateien für Microsoft Installer vergleichen ...
MvG
das ist richtig! :)
dlin
2

Es gibt keine Entsprechung zur Dateierweiterung exe in Windows, die angibt, dass eine Datei ausführbar ist. Stattdessen können ausführbare Dateien eine beliebige Erweiterung haben und haben normalerweise überhaupt keine Erweiterung .

Linux / Unix verwendet Dateiberechtigungen , um anzuzeigen , ob eine Datei kann ausgeführt werden. Insbesondere gibt es eine Berechtigung zum Ausführen von Dateien, die dem System mitteilt, dass diese Datei ausgeführt werden darf . Das Fehlen dieser Berechtigung bedeutet jedoch nicht, dass die Datei keine ausführbare Datei ist. lediglich, dass der betreffende Benutzer nicht versuchen darf , es auszuführen. Ebenso bedeutet das Vorhandensein dieser Berechtigung nicht immer, dass die Datei eine gültige ausführbare Datei ist.

Linux / Unix hat ein binäres ausführbares Dateiformat namens ELF, das den binären ausführbaren Formaten PE (Windows) oder MZ / NE (DOS) entspricht, die normalerweise die Erweiterung .exe tragen

Abhängig von der Shell können jedoch auch andere Dateitypen ausführbar sein. Wenn Sie versuchen, eine Datei auszuführen, die das System nicht als binäre ausführbare Datei erkennt (z. B. ELF-Format), wird sie normalerweise vom aktuellen Shell-Interpreter interpretiert. Dies hat den gleichen Effekt wie Batch-Dateien in Windows oder DOS, nur dass es nicht die Erweiterung ist, die den Typ oder die Art der Ausführung angibt.

Shell-Dateien können optional mit einem Hash-Bang beginnen (auf die ersten beiden Zeichen in der Datei #!folgt ein Pfad zu einem Interpreter). In diesem Fall wird der Rest der Datei nicht mit dem aktuellen Shell-Interpreter interpretiert, sondern es wird eine alternative Shell oder ein Interpreter gestartet Führe die Datei aus. Auf diese Weise können Sie ein Skript in einer beliebigen interpretierten Sprache haben und es dennoch mit dem richtigen Interpreter ausführen, wenn Sie versuchen, das Skript auszuführen.

thomasrutter
quelle
Whoah, das hätte ich auch beinahe beantwortet. Schauen Sie sich das Datum an, dieser Beitrag ist ein Dinosaurier.
Tamsyn Michael
1

EXE- und DLL-Dateien sind portable ausführbare Dateien. Diese basieren auf den PE / COFF-Unix-Dateien.

Weitere Informationen finden Sie unter http://en.wikipedia.org/wiki/Portable_Executable .

In Ubuntu gibt es keine spezifische Erweiterung für eine ausführbare Datei. Dies sind in der Regel Dateien, die nach der Anwendung benannt sind, auf die sie sich beziehen.

Der wichtige Faktor ist, dass für diese Dateien das ausführbare Bit gesetzt ist. Wenn Sie über ein Farbterminal verfügen, werden Sie feststellen, dass diese bei Verwendung von eine andere Farbe haben ls.

Im Unix-Dateisystem werden ausführbare Binärdateien in der Regel an einem eigenen Speicherort gespeichert.

  1. / bin (Core-Binärdateien)
  2. / sbin (Systembinärdateien)
  3. / usr / bin (Anwendungsbinärdateien)

Andere Anwendungsressourcen können in / usr / lib / oder / usr / share / gespeichert werden.

Eine Deb-Datei entspricht korrekter einer MSI-Datei in Windows (dh einem Paketinstallationsprogramm).

Im Allgemeinen enthalten tar.gz-Dateien oder bz2-Dateien Quellcode, aus dem eine Anwendung erstellt werden kann

Merlin
quelle
0

Ubuntu, das der EXE / .com-Datei entspricht, ist eine Datei ohne Dateierweiterung. Normalerweise werden aus Gründen der Übersichtlichkeit einige Erweiterungen wie .bin, .run usw. hinzugefügt

Es gibt mehrere Alternativen für .bat-Dateien (fast alle Dateien), die beliebteste ist .sh

.deb ist nur eine Archiv-Binärdatei (ähnlich wie .msi in Windows) mit Debian-Standards

.tar.gz ist nur ein in Ubuntu gebräuchliches Archivierungsformat

Tachyonen
quelle
0

Jeder Dateiname kann unabhängig von der Erweiterung als ausführbar festgelegt werden, die Datei muss jedoch über die entsprechenden Berechtigungen verfügen. Sie können die Berechtigung erteilen, indem Sie in Nautilus mit der rechten Maustaste auf die Datei klicken, auf Eigenschaften klicken und das Kontrollkästchen "Datei als Programm ausführen lassen" aktivieren:

Menüeintrag Ausführen anzeigen: -Kreuzfeld- Datei als Programm ausführen lassen

Terrarisch
quelle
Ich möchte darauf hinweisen, dass jeder Dateiname ausführbar gemacht werden kann, nicht jeder Dateityp, wie der Ausdruck "Beliebige Datei" zu bedeuten scheint. Bearbeitung für Klarheit.
Elder Geek
-3

Debian-Paket für Linux und TAR-Archiv, komprimiert mit dem Standard-Komprimierungsalgorithmus GNU zip (gzip); enthält eine oder mehrere komprimierte Dateien; Wird häufig unter Unix-Betriebssystemen zum Packen von Dateien, Programmen und Installationsprogrammen verwendet.

HINWEIS : tar.gz - Dateien müssen zuerst dekomprimiert werden und dann erweitert , um ein TAR - Dienstprogramm. Sie enthalten die Dateitypen .TAR und .GZ.

Shanmugasundharam Selvadurai
quelle