桌面文件不执行命令

Desktop file not executing command

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

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

如果我直接在终端上 运行 它,它就可以工作(如果文件存在则显示 "yes",如果不存在则显示 "no")。但是我想在 .desktop 文件中执行这个命令,使用它作为 Exec key:

的值
[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 在终端上。

我在这里错过了什么?

尝试将您的 Exec 设置为:

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

'if' 命令是 bash 内置命令,不是外部命令。

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

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

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

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

这里 .desktop 使用选项和参数

执行"sh"