我想在bash脚本中获取用户默认pdf查看器的路径。
我知道可以使用xdg open/exo open在查看器中打开文件,但我只想知道查看器是什么。我不想真的打开它。例如,如果我在ubuntu系统上运行这个程序,我想能够确定用户的pdf查看器是/usr/bin/evince
我已经知道我可以做xdg-mime query default application/pdf来获取.desktop文件,但是我不知道如何获取结果并到达查看器的路径(不从xdg open复制search_desktop_file()函数,这似乎不是最好的方法)。

最佳答案

我不确定这是否是最好的方法,也许不是,但它有效:)

#!/bin/sh
DESKTOPFILE=`xdg-mime query default application/pdf`
DESKTOPPATH='~/.local/share/applications/'
if [ ! -f $DESKTOPPATH$DESKTOPFILE ];
then
        DESKTOPPATH='/usr/share/applications/'
fi
if [ ! -f $DESKTOPPATH$DESKTOPFILE ];
then
        DESKTOPPATH='/usr/local/share/applications/'
fi
EXECNAME=`cat $DESKTOPPATH$DESKTOPFILE | grep ^Exec | cut -d '=' -f2 | cut -d ' ' -f 1`
EXECPATH=`which $EXECNAME`
echo $EXECPATH

08-26 04:54