桌面文件不执行命令
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"
我有这个简单的命令来检查文件是否存在:
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"