![带有日期变量的 .desktop 文件不起作用](https://linux22.com/image/998477/%E5%B8%A6%E6%9C%89%E6%97%A5%E6%9C%9F%E5%8F%98%E9%87%8F%E7%9A%84%20.desktop%20%E6%96%87%E4%BB%B6%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
[Desktop Entry]
Version=1.0
Type=Application
Name=test
Exec=bash -c 'DATE=$(date +%Y%m%d) ; echo $DATE'
Terminal=true
Icon=utilities-terminal
当我双击它时,什么也没有发生,并且我不想在它上面包装另一个脚本,我该怎么做才能修复这个单行脚本?
答案1
正如steeldriver 和muru 正确指出的那样,freedesktop 标准规定文件类型参数使用%
符号,但可以通过双%
符号进行转义。
您的程序中还有一个问题,即默认程序gnome-terminal
将启动,但一旦子程序退出,它就会立即退出。就您而言,bash -c
一旦 echo 完成,它就会退出。为了保持终端打开,您需要添加另一个 shell 调用。此外,您不需要 echo 变量,您可以直接使用date
。因此,您编辑的文件将如下所示:
[Desktop Entry]
Version=1.0
Type=Application
Name=test
Exec=bash -c 'echo "TEST";date +%%Y%%m%%d;bash'
Terminal=true
Icon=utilities-terminal
正如您在屏幕截图中看到的,第二次调用 shell 正确地保持窗口打开并显示时间戳:
也可以看看: