Je vais tenter de donner une réponse sous-jacente sur la façon dont les systèmes Unix traitent les fichiers. Comme d'autres l'ont souligné, votre formulation de la question est trompeuse, car les fichiers eux-mêmes ne signalent pas leur type et le noyau lui-même ne décide pas des applications à utiliser.
Dans les systèmes d'exploitation Unix et Windows, les fichiers sont structurés simplement comme une séquence d'octets. De Tanenbaum's Operating Systems , troisième édition:
En effet, le système d'exploitation ne sait pas ou ne se soucie pas du contenu du fichier. Tout ce qu'il voit sont des octets. Toute signification doit être imposée par les programmes au niveau utilisateur.
C’est pourquoi, dans un environnement de bureau, xdg-open
est utilisé pour déterminer les applications par défaut permettant d'ouvrir des types de fichiers spécifiques.
Sur un système Unix, les fichiers sont différenciés entre fichiers normaux et fichiers spéciaux . Un fichier normal est simplement une donnée utilisateur qui peut être un fichier texte (encodage ASCII ou Unicode) ou binaire (code exécutable). Les fichiers spéciaux sont des fichiers indispensables à l'exécution du système d'exploitation. Ceux-ci incluent des répertoires, des liens, des tubes, des sockets et des fichiers de périphérique.¹
C’est par convention que les noms de fichier contiennent des extensions indiquant le type de fichier qu’ils peuvent être, par exemple * .c pour le code source C, * .html pour les pages Web, etc. De Tanenbaum:
Dans certains systèmes (par exemple, UNIX), les extensions de fichier ne sont que des conventions et ne sont pas appliquées par le système d'exploitation. Un fichier nommé fichier.txt peut être une sorte de fichier texte, mais ce nom est plus destiné à rappeler au propriétaire que de transmettre des informations réelles à l'ordinateur. D'autre part, un compilateur C peut en fait insister pour que les fichiers qu'il doit compiler se terminent par .c, et il peut refuser de les compiler s'ils ne le font pas.
Si un fichier est enregistré ou renommé sans l’extension appropriée, il conserve le même format pour ce type de fichier. C’est ainsi que la plupart des gestionnaires de fichiers décident avec quelles applications ouvrir les fichiers et pourquoi, sans extension, l’utilisateur sera invité à choisir "Choisissez le programme que vous souhaitez utiliser pour ouvrir ce fichier:".
Enfin, les variables d’environnement permettent de définir des paramètres au niveau du système et de l’utilisateur. Par exemple, la variable EDITOR
est utilisée pour spécifier l'éditeur de texte pour ouvrir lors de la manipulation par exemple du texte vim
, nano
etc. Voici comment les processus savent quel éditeur ouvert, comme lors de l' édition d' un git
message de validation. Sinon, vous avez raison de préciser quelle application utiliser. Notez que vim
les types de fichier sont détectés en vérifiant les extensions et en inspectant le contenu du fichier, si le paramètre filetype on
est défini, ce qui applique ensuite la coloration syntaxique correcte, l'indentation, etc. ²
TL; DR
En résumé, ce sont les applications de niveau utilisateur qui déterminent les programmes avec lesquels ouvrir un type de fichier spécifique, et non le système d'exploitation lui-même.