如何访问.desktop文件的exec行中的环境变量?

Sco*_*hie 16 linux freedesktop.org

我的程序需要一个环境变量作为其参数之一:

myprogram --folder=$HOME/.special
Run Code Online (Sandbox Code Playgroud)

但是,如果我将它放入.desktop文件的exec行,它不起作用:

Exec=myprogram --folder=$HOME/.special
Run Code Online (Sandbox Code Playgroud)

$ HOME似乎无所事事.

Sco*_*hie 27

默认情况下,环境变量似乎并未被所有实现解析,但您可以改为执行sh,这将解析传递的环境变量.请注意,桌面规范还要求您使用反斜杠转义=和$字符.所以你要:

Exec=sh -c "myprogram --folder\=\$HOME/.special"
Run Code Online (Sandbox Code Playgroud)

有关需要转义的完整字符列表,请参阅规范

  • 当字符在字符串中时,不需要转义任何字符。 (2认同)
  • 这对我的用例非常有效,它在运行命令之前预先声明了一个变量:`Exec=sh -c "FOO='bar' /path/to/exec"` (2认同)
  • 它适用于“Exec”,但不适用于值“Path”或“Icon”。 (2认同)