当前位置: 首页>>技术问答>>正文


文件关联存储在哪里?

, , ,

问题描述

Ubuntu或任何其他Linux系统如何存储文件关联?

有没有一些/etc/asscociations文件?

我知道我可以右键单击文件并通过”open with”更改它,但我只是想知道它是如何在内部存储的。

最佳解决办法

文件管理器(默认情况下为Nautilus)使用文件的MIME type来确定要打开它的程序。安装应用程序时,它可以指定它可以打开的MIME类型以及用于打开位于/usr/share/applications中的.desktop文件中的文件的命令。这是用于菜单,桌面快捷方式等的文件。

例如,GIMP具有以下.desktop文件:

[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;

请参阅MimeType字段 – 列出支持的MIME类型.Exec字段告诉系统使用命令gimp-2.7 %U,将’%U’替换为要打开的文件。 (注意GIMP 2.7是我从PPA安装的版本,因此高于Ubuntu存储库中的当前版本)。

安装应用程序包后,系统会将此MIME类型数据提取到更容易访问的数据库中,因为如果每次打开文件时查看每个.desktop文件都需要很长时间。

这告诉系统哪些应用程序可用于该MIME类型,并在’Open With’列表中提供应用程序。默认值在别处定义。文件/usr/share/applications/defaults.list提供系统默认值的信息。除非您另行选择,否则这些是’Open’文件时使用的应用程序。

次佳解决办法

为了补充dv3500ea的优秀答案,我想补充一些关于更改关联时会发生什么的信息。

虽然defaults.list(您可以通过键入’locate defaults.list’找到)提供与每种MIME类型关联的应用程序列表,但您所做的任何自定义都存储在主目录中的〜/.local /share /applications /mimeapps中.LIST。因此,如果添加或删除关联,或更改默认关联,则会更新此文件。

http://library.gnome.org/admin/system-admin-guide/stable/上的GNOME桌面系统管理指南似乎没有讨论mimeapps.list,但我在http://live.gnome.org/SysAdminGuideUpdate上找到了以下描述:

mimeapps.list is located in $XDG_DATA_DIRS/applications. Its purpose is to add or remove mime associations from applications. nautilus writes ~/.local/share/applications/mimeapps.list when the user makes changes in the “Open With” dialog.

第三种解决办法

我发现在我的系统(Debian Jessie)上还有一个~/.config/mimeapps.list,它有一个我意外创建的关联,用gedit打开一个特定的文件类型。没有任何标准的纠正方法(默认的应用程序设置,Thunar的open with property)都反映了这一点,但gedit是默认的应用程序。

我能够从~/.config/mimeapps.list中删除该行,现在正确的应用程序打开该文件。

第四种办法

使用以下行在~/.local/share/applications中创建文件truecrypt.desktop

[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes

然后编辑文件~/.local/share/applications/mimeapps.list并添加以下行:

application/octet-stream=truecrypt.desktop

我通过以下运行此命令找到了mime类型的Truecrypt:

file --mime-type -b <any truecrypt filename>

第五种办法

我能够设置这样的关联:

xdg-mime default xnview.desktop image/jpeg

您还可以删除关联并执行其他操作:man xdg-mime

我不需要运行sudo update-desktop-database

第六种办法

我发现此链接涉及默认关联,它可能会有所帮助。 https://wiki.archlinux.org/index.php/Default_Applications用于全球协会:

/usr/share/applications/mimeapps.list

每个用户关联:

~/.local/share/applications/mimeapps.list

语法如下:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN

[Added Associations]部分用于指定优先级降低的首选(默认)应用程序。这意味着desktopfile1是最受欢迎的,desktopfileN是最不受欢迎的。 [Removed Associations]部分用于显式删除任何先前继承的关联。

第七种办法

mimeapps.list搜索路径

其他人已经提到了这个文件,但没有一个人精确地解释了它的位置。

freedesktop.org标准在https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html上说:

The lookup order for this file is as follows:

$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users)
$XDG_CONFIG_HOME/mimeapps.list             user overrides (recommended location for user configuration GUIs)
$XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific
$XDG_CONFIG_DIRS/mimeapps.list             sysadmin and ISV overrides
$XDG_DATA_HOME/applications/$desktop-mimeapps.list  for completeness, deprecated, desktop-specific
$XDG_DATA_HOME/applications/mimeapps.list             for compatibility, deprecated
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list    distribution-provided defaults, desktop-specific
$XDG_DATA_DIRS/applications/mimeapps.list              distribution-provided defaults

然后在https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html中给出这些环境变量的默认值:

  • $XDG_DATA_HOME$HOME/.local/share

  • $XDG_CONFIG_HOME$HOME/.config

  • $XDG_DATA_DIRS:无,附加到XDG_DATA_HOME

  • $XDG_CONFIG_DIRS:无,附加到XDG_CONFIG_HOME

旧版本的Ubuntu可能无法检查~/.config,因此请确保您也尝试使用~/.local/share

命令如:

 xdg-settings set default-web-browser chromium-browser.desktop
 xdg-settings get default-web-browser

将自动编辑这些文件。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1347.html,未经允许,请勿转载。