Установить переменную среды для единой панели запуска приложений

8

Я создал .desktopфайл для запуска нашего приложения. Наше приложение требует, чтобы определенная переменная среды была настроена правильно. Где я могу настроить эту переменную среды для каждого пользователя (обычные кандидаты, которых я знаю, любят ~/.bashrcи ~/.profileне работают).

Может быть, есть обходной Exec=путь , поэтому я могу настроить его в строке .desktopфайла перед запуском приложения?

Майк Л.
источник

Ответы:

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это только чтение, когда вы входите в систему , поэтому вы должны выйти из системы после его изменения.

user1686
источник
Спасибо. К сожалению, ваше предложение использовать env VAR=value /my/appне работает; переменная окружения VARне устанавливается valueпри /my/appзапуске (я пытался редактировать desktopфайл в ~/.gnome/apps). Создание скрипта-обертки для меня не вариант, потому что это должно работать для нашего приложения, распространяемого среди конечных пользователей, и я не знаю, где конечный пользователь захочет разместить скрипт-обертку (создание программы запуска не должно требовать прав администратора). ).
Майк Л.
(Да? Я не знал, что ~/.gnome/appsон все еще использовался; его вызывали ~/.local/share/applicationsпоследние несколько лет.) @Mike, если это ваше собственное приложение, почему его нельзя исправить, чтобы автоматически определить правильную переменную среды? (Кроме того, могу ли я спросить, какую переменную вы конкретно устанавливаете?)
user1686
Я пытаюсь установить переменную, определяющую расположение среды выполнения Java для нашего приложения.
Майк Л.
1
возможно , использовать некоторые из стандартных локаций standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
technosaurus
Я установил .desktopфайл с помощью xdg-desktop-menu install <my-desktop-file>. Похоже, что он скопировал его в двух местах, и я всегда редактировал неправильный ...
Майк Л.