我出于好奇问这个问题,想知道当我在文件浏览器(比如 Nautilus)中双击文件时“幕后”发生了什么。具体来说,可执行文件使用哪些参数执行?.desktop 文件在哪里发挥作用,Nautilus 如何发送文件名?
有一次,Okular 打开了同一个文件的多个实例,我不得不编写一个 shell 脚本,但由于文件名传递不正确,脚本经常会失败。(文件名中的空格会转换为 HTML %20 字符,我不得不花很多时间弄清楚文件名是如何传递的。)
答案1
有两个目录包含.desctop
文件:(/usr/share/applications/
所有用户的全局列表)和~/.local/share/applications/
(特定用户)。两个目录都包含文件类型关联列表(defaults.list
和mimeapps.list
相应)。
单击某个文件时,Nautilus 会找到相应的.desctop
文件并启动您的程序。每个.desctop
文件都包含Exec
指定命令行(程序及其参数)的键。请参阅这个文件了解有关Exec
密钥的详细信息。
如果.desctop
文件指定了没有完整路径的程序,则会在您的 上查找$PATH
。在默认安装中,$PATH
通常包括以下目录:/usr/local/sbin
,/usr/local/bin
,/usr/sbin
,/usr/bin
,/sbin
,/bin
。