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
需要一些额外的输入。