我有这个简单的命令来检查文件是否存在:
if [ -f /tmp/file.txt ] ; then echo "yes" ; else echo "no" ; fi
如果我直接在终端上运行它,它就可以工作(如果文件存在则显示“yes”,如果不存在则显示“no”)。但我想在 .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 notsupported
,但是如果我将Exec
值更改为echo "yes"
并执行xdg-open custom://
,它会在终端上显示yes
。
我在这里缺少什么?
最佳答案
您正在尝试在不受支持的 .desktop 文件中执行 shell 脚本编码。
“echo yes”起作用的原因是.desktop执行echo命令时参数为“yes”,这是可以接受的。
.desktop 执行命令以及选项和参数。您可以在 .sh 文件中编写 shell 脚本代码,并在 Exec 中提及它或使用
运行代码Exec=sh -c "if [ -f /tmp/file.txt ] ; then echo 'yes' ; else echo 'no' ; fi"
此处 .desktop 使用选项和参数执行“sh”
关于linux - 桌面文件不执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31789330/