为Unity应用程序启动器设置环境变量


8

我已经创建了一个.desktop文件来启动我们的应用程序。我们的应用程序要求正确配置某个环境变量。我在哪里可以在每个用户的基础上配置这个环境变量(我知道的常用候选,喜欢~/.bashrc~/.profile不起作用)。

也许有一个解决方法,所以我可以在启动应用程序之前Exec=.desktop文件行中配置它?

Answers:


15

在桌面文件本身中,您可以通过env以下方式执行程序:

Exec=/usr/bin/env VAR=value /usr/bin/yourprogram

或者,使用包装器脚本(例如/usr/bin/yourprogram.env):

#!/bin/sh
VAR=value
export VAR
exec /usr/bin/yourprogram.real "$@"

但是,两者都是糟糕的解决方案,因为如果程序是通过包装程序启动的,Unity将无法正确跟踪程序。

工作会好得多~/.profile- 确保你使用正确的语法和所有:

export VAR=value

要么

VAR=value
export VAR

另请记住,~/.profile只有在您登录时才会读取,因此您必须在更改后注销。


谢谢。不幸的是,你的使用建议env VAR=value /my/app不起作用; 环境变量VAR未设置为value/my/app启动(我已经通过编辑试图desktop在文件~/.gnome/apps)。创建一个包装器脚本对我来说是没有选择的,因为这应该适用于我们分发给最终用户的应用程序,我不知道最终用户希望包装器脚本位于何处(创建启动器不能要求管理员权限) )。
Mike L.

(嗯?我不知道~/.gnome/apps还在使用中; ~/.local/share/applications过去几年一直在调用它。) @迈克,如果它是你自己的应用程序,为什么不能自动确定适当的环境变量?(另外,我可以问你具体设置哪个变量吗?)
grawity

我正在尝试为我们的应用程序设置一个定义Java运行时环境位置的变量。
Mike L.

1
也许使用一些标准的位置标准
.freedesktop.org/basedir

我已经安装了该.desktop文件xdg-desktop-menu install <my-desktop-file>。看起来它将它复制到两个位置,我总是编辑错误的一个......
Mike L.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.