Intentaré dar una respuesta subyacente sobre cómo los sistemas Unix manejan los archivos. Como otros han señalado, su formulación de la pregunta es engañosa ya que los archivos en sí mismos no informan de qué tipo son y el núcleo en sí no decide qué aplicaciones usar.
En los sistemas operativos Unix y Windows, los archivos están estructurados simplemente como una secuencia de bytes. De los sistemas operativos de Tanenbaum , tercera edición:
En efecto, el sistema operativo no sabe ni le importa lo que hay en el archivo. Todo lo que ve son bytes. Cualquier significado debe ser impuesto por los programas a nivel de usuario.
Es por eso que, en un entorno de escritorio, xdg-open
se utiliza para determinar aplicaciones predeterminadas para abrir tipos de archivos específicos.
En un sistema Unix, los archivos se diferencian entre archivos normales y archivos especiales . Un archivo normal es simplemente información del usuario que puede ser un archivo de texto (codificación ASCII o Unicode) o binario (código ejecutable). Los archivos especiales son archivos que son esenciales para ejecutar el sistema operativo. Estos incluyen directorios, enlaces, tuberías, sockets y archivos de dispositivos. ¹
Es por convención que los nombres de archivo contienen extensiones para indicar qué tipo de archivo pueden ser, por ejemplo, * .c para código fuente C, * .html para páginas web, etc. De Tanenbaum:
En algunos sistemas (por ejemplo, UNIX), las extensiones de archivo son solo convenciones y el sistema operativo no las aplica. Un archivo llamado file.txt podría ser algún tipo de archivo de texto, pero ese nombre es más para recordarle al propietario que para transmitir cualquier información real a la computadora. Por otro lado, un compilador de C puede insistir en que los archivos que debe compilar terminen en .c, y puede negarse a compilarlos si no lo hacen.
Si un archivo se guarda o cambia de nombre sin la extensión adecuada, aún conserva el mismo formato para ese tipo de archivo. Así es como la mayoría de los administradores de archivos deciden con qué aplicaciones abrir archivos, y por qué sin la extensión la mayoría le preguntará al usuario "Elija el programa que desea usar para abrir este archivo:".
Por último, las variables de entorno se utilizan para definir configuraciones de todo el sistema y de nivel de usuario. Por ejemplo, la variable EDITOR
se usa para especificar qué editor de texto abrir cuando se maneja texto vim
, por ejemplo nano
, etc. Así es como los procesos saben qué editor abrir, como cuando se edita un git
mensaje de confirmación. De lo contrario, tiene razón en que debe especificar qué aplicación utilizar. Tenga en cuenta que vim
detecta los tipos de archivo comprobando las extensiones e inspeccionando el contenido del archivo, si se establece la configuración filetype on
, que luego aplica el resaltado de sintaxis correcto, sangría, etc. ²
TL; DR
En resumen, son las aplicaciones de nivel de usuario las que determinan con qué programas abrir un tipo de archivo específico, y no el sistema operativo en sí.