Como o Linux sabe qual aplicativo usar para abrir um arquivo?

2

Eu não fiz nada com o Linux em uma década, então espero que essa questão ainda seja relevante. Eu sempre quis saber como o Linux fez isso, e agora só pensei nisso novamente.

No mundo do sistema operacional Windows, os arquivos são associados a um aplicativo por sua extensão. Por exemplo, foo.txt pode ser aberto com o notepad (txt). E foo.xls seria aberto com o Excel (xls).

Com o Linux, os nomes dos arquivos não tinham extensões (eles fazem agora?), então como ele sabia que aplicativo usar para abrir um arquivo? Se um arquivo fosse chamado foo e eu clicasse duas vezes nele, ele seria realmente aberto dentro do aplicativo correto. Como?

    
por Bob Horn 22.02.2013 / 22:23

2 respostas

3

Na verdade, o próprio Linux não se importa com os tipos de arquivo, ele só se importa se um arquivo é executável ou não, e isso é definido pelas propriedades de um arquivo, não pelo conteúdo. No entanto, a ferramenta file , que é distribuída com o linux, pode ajudar aqui. file compara o conteúdo do arquivo com um banco de dados e procura uma correspondência. Vários formatos de arquivo usam números mágicos em seus cabeçalhos, por exemplo, todo arquivo JPEG começa com FFD8 e termina com FFD9 . Você deve se lembrar que os antigos executáveis do DOS sempre começam com MZ , que é novamente um número mágico.

    
por 22.02.2013 / 22:46
4

A maioria dos desktops Linux usa xdg-open para isso nos bastidores. Que consulta o banco de dados local xdg-mime XML, que pode identificar arquivos por suas extensões, como no Windows, ou por bytes mágicos nos próprios arquivos, dependendo da configuração.

Se você quiser adicionar suporte a tipos de arquivo adicionais, use xdg-mime . Esta página documenta sua semântica XML.

Em princípio, também é possível usar o mailcap para isso (com run-mailcap ), que examina apenas extensões , mas eu não vi um ambiente de desktop que faz isso em muito tempo.

    
por 22.02.2013 / 22:45

Tags