~ 和 ${USER} 在 .desktop 文件中不起作用

~ 和 ${USER} 在 .desktop 文件中不起作用

Ubuntu 12.04 32 位

我正在尝试手动创建一个 .desktop 文件来启动应用程序。我希望执行以下命令:

java -jar ~/.osbuddy/osbuddy.jar

当我运行 .desktop 文件时。但是,这不起作用。然后我尝试:

java -jar /home/${USER}/.osbuddy/osbuddy.jar

但也不起作用。

最后,

java -jar /home/branon/.osbuddy/osbuddy.jar

运行良好。我通过终端手动执行了上述所有行,程序启动正常。为什么它在 .desktop 文件中不起作用?

感谢您提供的任何信息。这是我第一次使用 AskUbuntu,因此如果我忽略了此表单的一些常规规则,我深表歉意。如果我违反了,请纠正我。

答案1

文件中的命令.desktop不是由 shell 运行的,而是使用一些系统调用。因此,你不能使用 shell 语法,如~${USER}

答案2

正如 Florian Diesch 所说波浪号扩展参数扩展不支持启动器(即.desktop文件)。但如果您需要使用它们(或其他 shell 扩展),您可以通过使启动器执行 shell使用命令行参数告诉 shell 运行特定命令并退出。

因此你可以发出命令:

sh -c 'java -jar ~/.osbuddy/osbuddy.jar'

我用过sh在 Ubuntu 中dash) 而不是bash) 以实现效率和简约。但如果您需要 提供的高级功能bash,则可以使用它。

如果路径~/.osbuddy/osbuddy.jar对多个用户有效,并且多个用户将使用启动器,我建议使用sh -c(或者如果您愿意,也可以使用bash -c)方式。但是,如果这仅适用于您,并且您的主要目标是避免输入/home/brannon...好吧,将命令传递给也sh -c需要一些额外的输入。

相关内容