~ e $ {USER} não funcionam em arquivos .desktop

1

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.

    
por keepbotting 08.04.2015 / 20:25

2 respostas

4

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}

    
por Florian Diesch 08.04.2015 / 20:32
0

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.

    
por Eliah Kagan 08.04.2015 / 21:54