O comando em um arquivo .desktop
não é executado por um shell, mas usando alguma chamada de sistema. Por causa disso, você não pode usar a sintaxe do shell como ~
ou ${USER}
Ubuntu 12,04 32 bits
Estou tentando criar manualmente um arquivo .desktop para iniciar um aplicativo. Desejo executar o comando:
java -jar ~/.osbuddy/osbuddy.jar
Quando eu executo meu arquivo .desktop. Entretanto, isso não funciona. Eu tentei então:
java -jar /home/${USER}/.osbuddy/osbuddy.jar
que também não funcionou.
Finalmente,
java -jar /home/branon/.osbuddy/osbuddy.jar
funcionou bem. Eu executei manualmente todas as linhas acima através do terminal e lançou o programa bem. Por que não funciona em um arquivo .desktop?
Obrigado por qualquer luz que você possa derramar. Esta é a minha primeira vez no AskUbuntu, então peço desculpas se estou ignorando algumas regras habituais deste formulário. Se eu transgredi, por favor me corrija.
O comando em um arquivo .desktop
não é executado por um shell, mas usando alguma chamada de sistema. Por causa disso, você não pode usar a sintaxe do shell como ~
ou ${USER}
Como diz Florian Diesch , Expansão do tilde e expansão de parâmetro não é suportada em lançadores (ou seja, .desktop
files). Mas se você precisar usá-los - ou outras expansões de shell - você pode fazê-lo fazendo com que o launcher execute um shell com argumentos de linha de comando dizendo ao shell para executar um comando específico e sair. / p>
Assim você pode fazer o seu comando:
sh -c 'java -jar ~/.osbuddy/osbuddy.jar'
Eu usei sh
(que no Ubuntu é dash
) em vez de bash
) para eficiência e minimalismo. Mas se você precisasse de um recurso avançado fornecido por bash
, você poderia usá-lo.
Se o caminho ~/.osbuddy/osbuddy.jar
for válido para vários usuários e vários usuários estiverem usando o iniciador, recomendo o caminho sh -c
(ou, se preferir, bash -c
). No entanto, se isso for apenas para você e seu objetivo principal é evitar digitar /home/brannon
... bem, passar o comando para sh -c
também envolve alguma digitação adicional.