Si un archivo le dice al sistema operativo su formato de archivo, ¿cómo elige el sistema operativo qué aplicación abrir por defecto?
En Windows, ¿se almacena la asociación en la tabla de registro?
¿Cómo elige Linux qué aplicación abrir un archivo?
Solía usar mucho Nautilus, pero ahora cambio a terminal. ¿Es cierto que en la terminal, siempre tenemos que especificar explícitamente qué aplicación abrir un archivo? ¿La configuración de qué aplicación para abrir un archivo de cierto formato por defecto pertenece al administrador de archivos (por ejemplo, Nautilus), y no es un problema cuando vivimos en terminales?
files
file-opening
Tim
fuente
fuente
Respuestas:
Puede haber diferentes mecanismos para manejar esta configuración predeterminada. Sin embargo, otras respuestas tienden a centrarse en entornos de escritorio completos, cada uno de ellos con su propio mecanismo. Sin embargo, estos no siempre se instalan en un sistema (uso mucho OpenBox), y en este caso, herramientas como las que
xdg-open
se pueden usar.Citando el Arch Wiki :
En este momento, estoy usando Ubuntu (12.04) y
xdg-open
está disponible. Sin embargo, cuando utiliza un entorno de escritorio completo como GNOME,xdg-open
actúa como un simple reenviador y transmite las solicitudes de archivos a su DE, que luego es libre de manejar como lo desee (consulte otras respuestas para GNOME y Nautilus, por ejemplo) .... lo que te lleva de vuelta a las otras respuestas en ese caso. Aún así, dado que esto es Unix y Linux, y no Ask Ubuntu:
Considerándolo todo:
Si es el primer caso, deberá configurarlo
xdg-open
directamente , utilizando elxdg-mime
comando (que también le permitirá ver qué aplicación debe manejar qué archivo). En el segundo caso ...... deberá configurar el abridor de archivos asociado con su entorno de escritorio. En algunos casos, la configuración realizada
xdg-mime
puede redirigirse a la herramienta de configuración adecuada en su entorno.fuente
xdg-open
es solo uno de estos componentes que intentan unir ambos extremos.Desde el entrada de wiki ,
También, esta respuesta tiene más detalles.
De esta respuesta, veo la siguiente información.
fuente
Un archivo no le dice al sistema operativo su formato de archivo, con una excepción:
Si un archivo ejecutable comienza con una línea llamada shebang, como
entonces esta línea le dice al kernel de Linux que debe iniciarse
/usr/bin/perl
(es decir, en lugar de ejecutar este archivo, debe ejecutarseusr/bin/perl
y proporcionar este archivo como argumento). Por supuesto, esto solo funciona con formatos de archivo que ignoran (o entienden) esa línea shebang.Aparte de eso, el sistema operativo como tal no sabe nada sobre los tipos de archivos. Sin embargo, muchos programas que permiten abrir otros archivos tienen su propio mecanismo para decidir qué programa usar para abrir qué archivo. Puede ser una lista dentro del programa en sí (Firefox, por ejemplo, mantiene dicha lista), o el programa puede delegarla en el entorno de escritorio (de los cuales hay varios para Linux).
Por lo general, esos mecanismos solo consideran el nombre del archivo para decidir de qué tipo es el archivo; una excepción son los clientes de correo electrónico y los navegadores web, donde el servidor proporciona el tipo de archivo de manera explícita / se indica en el correo.
El mecanismo suele ser de dos pasos:
fuente
gnome-open
. Estoy seguro de que hay herramientas de línea de comandos similares para los otros entornos de escritorio. Editar: solo noto que John WH Smith da un comando que es independiente de su entorno de escritorio.Se hace similar a MS-Windows.
No lo hace el sistema operativo. Lo realiza el administrador de archivos, una parte del sistema de ventanas. Por lo general, la parte del nombre del archivo después del último punto
.
se usa para tomar la decisión. Hay una manera de configurarlos en la configuración, o cuando hace clic derecho en un archivo.Por lo tanto, el archivo no le dice al sistema operativo, el archivo no está activo, por lo que no puede hacer nada por sí solo, pero el administrador de archivos mira el nombre del archivo, el administrador de archivos también podría mirar dentro del archivo de la misma manera que lo hace la
file
utilidad.fuente
shell32!ShellExecute()
, y aunque shell32 es parte de Windows Shell, no es parte del Explorador de Windows, que es el administrador de archivos predeterminado.Como dice @richard, es similar a Windows. Un administrador de archivos genérico puede mirar primero el nombre de un archivo e intentar reconocer una extensión de archivo asociada con un programa. Si eso falla, puede intentar abrir el archivo y buscar un encabezado. Si intenta leer un archivo que no es de texto (por ejemplo, un .jpeg), verá una cadena de datos que describe el archivo. Por ejemplo, esta es la primera línea de un .jpeg que tenía por ahí:
'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xfe\x00;CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 90'
fuente
file.png
archivo PNGfile.gif
todavía se abrirá el visor de imágenes. Y si vacía el archivo, se abrirá en el editor de texto.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:
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:
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 textovim
, por ejemplonano
, etc. Así es como los procesos saben qué editor abrir, como cuando se edita ungit
mensaje de confirmación. De lo contrario, tiene razón en que debe especificar qué aplicación utilizar. Tenga en cuenta quevim
detecta los tipos de archivo comprobando las extensiones e inspeccionando el contenido del archivo, si se establece la configuraciónfiletype 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í.
fuente