32-разрядная Ubuntu 12.04
Я пытаюсь вручную создать .desktop файл для запуска приложения. Я хочу выполнить команду:
java -jar ~/.osbuddy/osbuddy.jar
Когда я выполняю свой .desktop файл. Однако это не работает. Я затем попробовал:
java -jar /home/${USER}/.osbuddy/osbuddy.jar
который не работал также.
Наконец,
java -jar /home/branon/.osbuddy/osbuddy.jar
хорошо работавший. Я вручную выполнил все вышеупомянутые строки через терминал, и он запустил прекрасную программу. Почему это не будет работать в .desktop файле?
Спасибо за любой свет можно потерять. Это - мой первый раз на AskUbuntu, таким образом, я приношу извинения, игнорирую ли я некоторые нормы обычного права этой формы. Если я нарушил, исправьте меня.
Команда в a .desktop
файл не выполняется оболочкой, но использующий некоторый системный вызов. Из-за этого Вы не можете использовать синтаксис оболочки как ~
или ${USER}
там
Как Florian Diesch говорит, расширение тильды и расширение параметра не поддерживаются в средствах запуска (т.е. .desktop
файлы). Но если необходимо использовать их - или другие расширения оболочки - можно сделать так, заставив средство запуска выполнить оболочку с параметрами командной строки, говоря оболочке выполнить определенную команду и выход.
Таким образом можно сделать команду:
sh -c 'java -jar ~/.osbuddy/osbuddy.jar'
Я использовал sh
(который в Ubuntu является dash
) вместо bash
) для эффективности и минимализма. Но если Вам была нужна расширенная функция, обеспеченная bash
, Вы могли использовать это вместо этого.
Если путь ~/.osbuddy/osbuddy.jar
допустимо для многочисленных пользователей, и многочисленные пользователи будут использовать средство запуска, я рекомендую sh -c
(или если Вы предпочитаете, bash -c
) путь. Однако, если это только для Вас, и Ваша главная цель состоит в том, чтобы не вводить /home/brannon
... хорошо, передавая команду sh -c
включает некоторый дополнительный ввод, также.