Estou criando .desktop
arquivos para uso no Unity Launcher.
Eu tenho meu próprio local no diretório inicial, onde coloco meus executáveis ( ~/usr/bin/
), que são adicionados corretamente à minha PATH
variável de ambiente no meu .pam_environment
arquivo, conforme especificado na documentação relevante do Ubuntu .
Este é o conteúdo do meu .pam_environment
arquivo:
LANGUAGE=en_AU:en_GB:en
LANG=en_AU.UTF-8
LC_NUMERIC=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LC_MONETARY=en_AU.UTF-8
LC_PAPER=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8
PATH DEFAULT=${PATH}:~/usr/bin/
O que resulta na minha PATH
variável da seguinte forma:
ben@ben-HPdv6:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:~/usr/bin/:~/usr/bin/
Eu sei que ele é anexado duas vezes, mas qualquer coisa no .pam_environment
arquivo parece ser adicionada duas vezes, independentemente do uso da sintaxe correta recomendada na documentação do Ubuntu que eu referenciei.
Este é um exemplo do problema (acontece com todos os casos). Eu tenho um script (chamado eclipse
) no ~/usr/bin/
qual executa o Eclipse IDE.
Eu posso abrir qualquer terminal e simplesmente digitar eclipse
e ele funciona bem como você esperaria.
Mas ao usar o seguinte .desktop
arquivo:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Eclipse - Juno (4.2)
Icon=/home/ben/.icons/eclipse.svg
Exec=eclipse
Eu recebo o erro:
Mas quando eu mudo a Exec=
linha para:
Exec=/home/ben/usr/bin/eclipse
funciona perfeitamente.
A documentação dos arquivos oficiais dos lançadores da unidade e da área de trabalho sugere que isso funcione:
Exec é o caminho para o arquivo executável. O caminho completo para o arquivo executável deve ser usado apenas no caso de não estar em nenhum dos caminhos especificados na variável $ PATH. Por exemplo, todos os arquivos que estão dentro do caminho / usr / bin não precisam ter o caminho completo especificado no campo Exec, mas apenas o nome do arquivo.
Alguma sugestão sobre o que está acontecendo?
Respostas:
O til não é expandido
.pam_environment
da mesma forma que em um script de perfil, e os arquivos da área de trabalho não fazem a expansão do shell em suasExec
linhas da mesma forma que o shell, então está procurando um arquivo que literalmente seja nomeado~/usr/bin/eclipse
, o que obviamente não acontece ' não existe.Substitua o til na atribuição PATH por $ {HOME} e ele parece funcionar.
fonte
$PATH
acontece duas vezes?O que é dito na documentação do Ubuntu faz sentido, no entanto, sua seção "não é mais recomendada" está faltando em alguns detalhes. Por esse motivo, minha resposta envolverá o uso de um desses métodos. Além disso: ele já é usado exatamente para esse mesmo objetivo.
Faça uma rápida visita ao seu arquivo ./.profile.
O meu contém o seguinte:
Como você pode ver na última seção deste arquivo (linhas abaixo de # set PATH, para incluir o compartimento privado do usuário, se ele existir), isso já está sendo feito. Portanto, se você quiser adicionar algo à variável $ PATH, basta fazer a mesma coisa. A documentação mencionou que isso será executado toda vez que o sistema for iniciado.
No seu caso, tudo o que você precisa fazer é adicionar isto:
Neste ponto, estou começando a pensar que a única razão pela qual esse método não é mais recomendado é que ele envolve scripts na inicialização, o que é muito sensível a pequenos erros. Quando alguém está trabalhando com algo assim, no entanto, um pequeno erro pode ser desfeito simplesmente mudando o arquivo para o estado anterior.
Se você não tiver certeza de como fazer isso:
1) Primeiro, pressione CTRL + ALT + F3
2) Faça o login seguindo o prompt na tela
3) Digite isso no prompt de comando:
4) remova estas linhas: (nós apenas as adicionamos)
5) pressione CTRL + O (como em Saída)
6) pressione CTRL + X (como no eXit)
7) digite
exit
e pressione ENTER (às vezes RETURN)8) agora pressione CTRL + ALT + F7
9) Você deve ter sua tela de login ou desktop, dependendo de quando o problema ocorreu. Caso contrário, pressione CTRL + ALT + DEL (às vezes CTRL + ALT + DELETE) e seu sistema deverá reiniciar com segurança.
Espero que isto ajude!
fonte