我想更深入地了解 mime 类型。到目前为止,感谢@munzir-taha ,我了解以下内容
在不同系统上具有不同的 mime 类型文件关联是正常的,即使这些系统运行的是同一发行版的相同版本,即使用户没有自定义任何 mime 关联。这是因为关联取决于每个系统中安装的软件包,可能还取决于它们的安装顺序。
我还了解用户可以使用以下任一方法添加或删除 mime 类型关联:
手动编辑
~/.config/mimeapps.list
使用 GUI 工具。在 KDE 中,这可以在系统设置中或通过 Dolphin 完成(例如,右键单击文件 > 属性 > 文件类型选项并将文件类型与您想要的应用程序相关联)
但是,我希望更深入地研究这一点。我正在运行 Arch Linux 和 KDE。我创建了一个新的用户帐户进行测试。它具有以下属性:
软件包 shared-mime-info 已安装:
sudo pacman -Qs shared-mime-info
local/shared-mime-info 1.15-2
Freedesktop.org Shared MIME Info
公钥具有 mime 类型的 text/plain:
$ xdg-mime query filetype id_rsa_test.pub
text/plain
text/plain 的默认处理程序是 Atom 编辑器:
$ xdg-mime query default text/plain
atom.desktop
该用户没有mimeapps.list
。典型文件不存在(如下所示),并且mimeapps.list
此用户帐户中没有其他文件。
$ less ~/.config/mimeapps.list
/home/deleteme/.config/mimeapps.list: No such file or directory
该系统似乎与具有.pub
mime-type 的文件具有系统范围的关联application/vnd.ms-publisher
。该文件存在于系统中:
/usr/share/mime/application/vnd.ms-publisher.xml
上述文件的内容包括文件的 glob 模式 .pub
:
<?xml version="1.0" encoding="utf-8"?>
<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="application/vnd.ms-publisher">
<!--Created automatically by update-mime-database. DO NOT EDIT!-->
<sub-class-of type="application/x-ole-storage"/>
<glob pattern="*.pub"/>
</mime-type>
为什么上面的 mime-type 不能确定这个查询的结果?
$ xdg-mime query filetype id_rsa_test.pub
text/plain
据我所知,我希望用户本地的 mimeapps.list 将负责该关联,但没有任何此类文件。
我没有找到.pub
该系统上文件的任何其他关联。正如我所提到的,这个新用户帐户没有 mimeapps.list。
你没有为此提供任何证据。相反,如果这真的是一个没有任何自定义的新创建的用户,你会
xdg-mime query filetype id_rsa_test.pub
显示text/plain
哪个是系统范围的关联。根据系统上安装的软件包和配置,您的系统将决定如何识别 mimetype。在您的情况下,您的系统很可能不是通过检查扩展名'.pub'来确定类型,而是通过检查作为文件内容的魔术代码来确定类型。