bea*_*uxq 9 mime-type xdg-open
xdg-mime query default inode/directory
Run Code Online (Sandbox Code Playgroud)
正确给我:
nemo.desktop
Run Code Online (Sandbox Code Playgroud)
就像我期望的那样,并希望它如此。
但
xdg-open $HOME
Run Code Online (Sandbox Code Playgroud)
给出一个错误:
xdg-mime: mimetype argument missing
Try 'xdg-mime --help' for more information.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/run-mailcap line 528.
Warning: program returned non-zero exit code #66
Run Code Online (Sandbox Code Playgroud)
...并打开 Audacious。
我尝试编辑 run-mailcap 行以转义大括号,从而消除了该错误消息。但这并不能解决问题。我仍然得到“缺少 mimetype 参数”并且打开了错误的程序。
我尝试卸载 Audacious,但它打开了一个不同的错误程序(git-cola 和 chrome)。
我试过了sudo apt-get install --reinstall xdg-utils,它没有改变任何东西。
编辑:更多信息,上述行为发生在 Cinnamon 和 Gnome 中,但不在 Lubuntu LXDE 中。在 LXDE 中,查询给出 nemo.desktop,而 xdg-open 不会在终端中产生任何错误信息,但它会打开 PCManFM(不是 nemo)。
这是错误或如何解决的线索吗?
小智 1
好吧,从本文来看,似乎已经为其他有类似问题的人发布了补丁: https://bugs.debian.org/cgi-bin/bugreport.cgi ?bug=810587
在这篇文章中,这个人遇到了:
“正则表达式中未转义的左大括号已被弃用,在正则表达式中传递;在 /usr/bin/run-mailcap 第 528 行由 <-- HERE in m/%{ <-- HERE (.*?)}/ 标记。”
运行 nmh 时,除了不同的程序之外,这似乎与您的错误消息类似。所以我建议运行:
sudo apt-get upgrade;sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)
因为受影响的软件包可能有带有补丁的升级版本。
我希望这有帮助。
注意:这将升级所有可以升级的软件包(无论如何,这都是一件好事),因此如果多个软件包想要升级,请不要感到惊讶。
xdg-open 是一个 shell 脚本,因此您可以使用 -x 对其进行调试
bash -x /usr/bin/xdg-open $HOME
Run Code Online (Sandbox Code Playgroud)
这给了我这样的输出
+ check_common_commands /home/amias
+ '[' 1 -gt 0 ']'
+ parm=/home/amias
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' x/home/amias '!=' x ']'
+ url=
+ '[' 1 -gt 0 ']'
+ parm=/home/amias
+ shift
+ case "$parm" in
+ '[' -n '' ']'
+ url=/home/amias
+ '[' 0 -gt 0 ']'
+ '[' -z /home/amias ']'
+ detectDE
+ unset GREP_OPTIONS
+ '[' -n Unity ']'
+ case "${XDG_CURRENT_DESKTOP}" in
+ '[' x = x ']'
+ '[' x '!=' x ']'
+ '[' xthis-is-deprecated '!=' x ']'
+ DE=gnome
+ '[' xgnome = x ']'
+ '[' xgnome = x ']'
+ '[' xgnome = xgnome ']'
+ which gnome-default-applications-properties
+ DE=gnome3
+ '[' xgnome3 = x ']'
+ DEBUG 2 'Selected DE gnome3'
+ '[' -z '' ']'
+ return 0
+ case "${BROWSER}" in
+ case "$DE" in
+ open_gnome3 /home/amias
+ gvfs-open --help
+ gvfs-open /home/amias
+ '[' 0 -eq 0 ']'
+ exit_success
+ '[' 0 -gt 0 ']'
+ exit 0
Run Code Online (Sandbox Code Playgroud)
这是来自 64 位 16.04 上 xdg-open 的有效安装。
我已经给你看了我的,现在你给我看看你的。
编辑:
查看您的输出,我可以看到 open_generic_xdg_mime 无法返回 mime 类型,这会阻止脚本选择正确的服务。一个简单的解决方法是创建一个名为 open_generic_xdg_mime 的脚本,并使其针对其输入运行“file -i”,这将为您提供 mime 类型,但您需要使用 cut 之类的工具稍微整理一下输出。如果您需要帮助,请告诉我。
| 归档时间: |
|
| 查看次数: |
4444 次 |
| 最近记录: |