Ich werde versuchen, eine grundlegende Antwort darauf zu geben, wie Unix-Systeme mit Dateien umgehen. Wie andere bereits betont haben, ist Ihre Formulierung der Frage irreführend, da die Dateien selbst nicht angeben, um welchen Typ es sich handelt, und der Kernel selbst nicht entscheidet, welche Anwendungen verwendet werden sollen.
In Unix- und Windows-Betriebssystemen werden Dateien einfach als Folge von Bytes strukturiert. Aus Tanenbaums Betriebssystemen , dritte Ausgabe:
Tatsächlich weiß oder kümmert es das Betriebssystem nicht, was in der Datei enthalten ist. Alles, was es sieht, sind Bytes. Jede Bedeutung muss von Programmen auf Benutzerebene auferlegt werden.
Aus diesem Grund werden in einer Desktop-Umgebung xdg-open
Standardanwendungen zum Öffnen bestimmter Dateitypen festgelegt.
Auf einem Unix-System werden Dateien zwischen regulären Dateien und speziellen Dateien unterschieden . Eine reguläre Datei besteht lediglich aus Benutzerdaten, die entweder eine Textdatei (ASCII- oder Unicode-Codierung) oder eine Binärdatei (ausführbarer Code) sein können. Spezielle Dateien sind Dateien, die zum Ausführen des Betriebssystems erforderlich sind. Dazu gehören Verzeichnisse, Links, Pipes, Sockets und Gerätedateien. ¹
Es ist üblich, dass Dateinamen Erweiterungen enthalten, die angeben, um welchen Dateityp es sich handelt , z. B. * .c für C-Quellcode, * .html für Webseiten usw. Von Tanenbaum:
In einigen Systemen (z. B. UNIX) sind Dateierweiterungen nur Konventionen und werden vom Betriebssystem nicht erzwungen. Eine Datei mit dem Namen file.txt kann eine Art Textdatei sein. Dieser Name soll den Besitzer jedoch eher daran erinnern, als dem Computer tatsächliche Informationen zu übermitteln. Andererseits kann ein C-Compiler tatsächlich darauf bestehen, dass die zu kompilierenden Dateien in .c enden, und es kann ablehnen, sie zu kompilieren, wenn dies nicht der Fall ist.
Wenn eine Datei ohne die richtige Erweiterung gespeichert oder umbenannt wird, behält sie weiterhin das gleiche Format für diesen Dateityp bei. Auf diese Weise entscheiden die meisten Dateimanager, mit welchen Anwendungen Dateien geöffnet werden sollen, und warum der Benutzer ohne die Erweiterung most die Meldung "Wählen Sie das Programm aus, mit dem Sie diese Datei öffnen möchten:" erhält.
Zuletzt werden Umgebungsvariablen verwendet, um systemweite Einstellungen und Einstellungen auf Benutzerebene zu definieren. Zum Beispiel wird die Variable EDITOR
wird verwendet , um festzulegen , welche Texteditor zu öffnen , wenn Text zB Handhabung vim
, nano
etc. Dies ist , wie Prozesse wissen , welchen Editor zu öffnen, wie bei der Bearbeitung einer git
Nachricht zu begehen. Andernfalls ist es richtig, dass Sie angeben müssen, welche Anwendung verwendet werden soll. Beachten Sie, dass vim
Dateitypen durch Überprüfen der Erweiterungen und Überprüfen des Dateiinhalts erkannt werden, wenn die Einstellung festgelegt filetype on
ist, wodurch die korrekte Syntaxhervorhebung, Einrückung usw. angewendet wird
TL; DR
Zusammenfassend gesagt bestimmen die Anwendungen auf Benutzerebene, mit welchen Programmen ein bestimmter Dateityp geöffnet werden soll, und nicht das Betriebssystem.