Ausführbare Datei
Als ausführbare Datei (auch Programmdatei) bezeichnet man eine Datei, die als Computerprogramm ausgeführt werden kann. Hierbei kann es sich um eine Binärdatei in Maschinensprache oder um eine Bytecode-Datei handeln (Binärprogramm), die direkt oder durch ein Laufzeitsystem ausgeführt werden kann, oder um eine Textdatei, die von einer Betriebssystem-Shell interpretiert wird.
Interaktion mit Betriebssystemen
Manche Betriebssysteme erkennen ausführbare Dateien an der Dateinamenserweiterung (beispielsweise .exe) oder an Kennungen, die neben der Datei in ihren Metadaten vermerkt sind (wie bei Unix-ähnlichen Systemen). Die meisten Betriebssysteme überprüfen jedoch auch das Dateiformat, um nicht zufällige Bitfolgen zur Ausführung gelangen zu lassen.
Moderne Betriebssysteme halten die Kontrolle über die Systemressourcen, wodurch einzelne Programme Systemaufrufe tätigen müssen, um auf besondere Ressourcen zugreifen zu können. Da jede Betriebssystemfamilie ihre eigenen Architekturen für Systemaufrufe hat, sind ausführbare Dateien im Allgemeinen an ein bestimmtes Betriebssystem gebunden. Es gibt jedoch einige Werkzeuge, die die Systemaufrufe abfangen und konvertieren und so ausführbare Dateien auf fremden Betriebssystemen funktionieren lassen. Beispiele sind hier Cygwin und Wine.
Windows
Unter Windows werden Dateitypen durch ihre Dateiendung gekennzeichnet. Ausführbar sind unter anderem:
com
exe
bat
cmd
msc
-
hta
(siehe auch: HTML-Applikation) -
pif
(eigentlich für Verknüpfungen gedacht, wird aber auch von Computerviren ausgenutzt) -
scf
(wird von speziellen Funktionen verwendet, beispielsweise „Desktop anzeigen“ in der Schnellstartleiste) -
scr
(Bildschirmschoner, gleiches internes Format wie exe)
Eine durch Semikola getrennte Liste ausführbarer Dateitypen wird in der Umgebungsvariable PATHEXT definiert. Alle in dieser Liste aufgeführten Dateiendungen brauchen in der Kommandozeile nicht eingetippt zu werden. Voraussetzung dafür ist jedoch entweder ein ausführbares Binärformat (*.exe
, *.com
, *.scr
) oder eine Zuordnung zum entsprechenden Interpreter (beispielsweise cmd.exe
für *.bat
und *.cmd
oder wscript.exe
für *.vbs
).
Unix und seine Derivate
Unter Unix-Derivaten wie beispielsweise Linux muss das „X-Bit“ in den Dateirechten gesetzt sein, um eine Datei als ausführbar zu kennzeichnen. Das X-Bit ist in der Regel bereits standardmäßig so gesetzt, dass die Datei für jeden ausführbar ist.
Während binäre Programme anhand ihres ELF-Headers erkannt werden, müssen Skripte und für Interpretersprachen geschriebene Programme mit einem Shebang beginnen, um vom Kernel als Programm erkannt und automatisch mit dem korrekten Interpreter ausgeführt zu werden.
Üblicherweise haben ausführbare Dateien unter Unix keine Dateiendung, da diese bei gesetztem X-Bit keine Rolle spielt.
macOS
Unter Apples macOS (vormals als Mac OS X bezeichnet) sind Anwenderprogramme („Applikationen“) als Application Bundles ausgeführt, die meist die Dateinamenerweiterung „.app“ tragen. Diese Bundles können Unterverzeichnisse oder komprimierte Dateien sein, in denen alle für das Programm notwendigen Dateien liegen, also Ressourcen, Bibliotheken und schließlich auch das ausführbare Programm selbst, das wie unter anderen Unix-Derivaten statt einer Dateinamenerweiterung das X-Bit („ausführbar“) gesetzt hat.
z/OS
Unter z/OS muss das ausführbare Programm in einer Programmbibliothek (organisiert als Partitioned Dataset oder PDSE mit Recordformat U) vorliegen. Ein "member" in dieser Bibliothek wird „Lademodul“ genannt und ist nur dann ausführbar, wenn auch die vom Binder (bzw. Linkage Editor) erzeugten Attribute im Directory vorhanden sind.
Ein ausführbares Programm wird in der STEPLIB oder der JOBLIB gesucht, und wenn es dort nicht gefunden wird, wird die Linklist durchsucht. Es kann ein Hauptprogramm (geladen über die Jobsteuerung) oder ein dynamisch gebundenes Unterprogramm (geladen durch einen Load-Befehl im Programmcode) sein.