桌面文件未执行命令

时间:2015-08-03 14:00:45

标签: linux terminal mime-types uri-scheme

我有这个简单的命令来检查文件是否存在:

if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi

如果我直接在终端上运行它,它可以工作(显示"是"如果文件存在,"没有"如果它没有&#t; t)。但是我想在.desktop文件中执行此命令,将其用作Exec键的值:

[Desktop Entry]
Version=1.0
Type=Application
Exec=if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi
StartupNotify=true
Terminal=false
Categories=Utility;X-XFCE;X-Xfce-Toplevel;
MimeType=x-scheme-handler/custom
Name=Custom Test
Comment=Custom

如果我尝试执行xdg-open custom://,我会custom://: error opening location: The specified location is not supported,但如果我将Exec值更改为echo "yes"并执行xdg-open custom://,则会显示yes在终端上。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

尝试将Exec设置为:

bash -c 'if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi'

' if'命令是bash-builtin,而不是外部命令。

答案 1 :(得分:0)

您正尝试在.desktop文件中执行不支持的shell脚本编码。

“echo yes”工作的原因是.desktop执行带有参数的echo命令为“是”,这是可以接受的。

.desktop执行命令以及选项和参数。您可以在.sh文件中编写shell脚本代码,并在Exec中提及它或使用

运行代码
Exec=sh -c "if [ -f /tmp/file.txt ] ; then echo 'yes' ; else echo 'no' ; fi"

这里.desktop用选项和参数执行“sh”