我想在bash脚本中获取用户默认PDF查看器的路径。
我知道我可以xdg-open / exo-open在查看器中打开文件,但我只想知道查看器是什么。我不想实际打开它。例如,如果我在Ubuntu系统上运行它,我希望能够确定用户的PDF查看器是/usr/bin/evince
。
我已经发现我可以xdg-mime query default application/pdf
来获取.desktop文件,但我不知道如何获取该结果并进入查看器的路径(不复制{{1来自xdg-open的函数,这似乎不是最好的方法)。
答案 0 :(得分:1)
我不确定这是否是最佳方式,可能不是,但它有效:)
#!/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
答案 1 :(得分:0)
可能只是您需要删除后缀:
basename $(xdg-mime query default application/pdf) .desktop
如果需要完整路径,请用which $()
括起来。