Je crée .desktop
fichiers à utiliser dans Unity Launcher.
J'ai mon propre emplacement dans mon répertoire personnel où je mets mes exécutables (~/usr/bin/
) qui est correctement ajouté à mon PATH
variable d'environnement dans mon .pam_environment
fichier comme spécifié dans la documentation Ubuntu appropriée.
Ceci est le contenu de mon .pam_environment
fichier :
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/
Ce qui se traduit par mon PATH
variable étant la suivante :
[email protected]:~$ 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/
Je sais qu'il est ajouté deux fois, mais rien dans le .pam_environment
Le fichier semble être ajouté deux fois, quoi qu'il arrive, lors de l'utilisation de la syntaxe correcte recommandée dans la documentation Ubuntu que j'ai référencée.
Ceci est un exemple du problème (cela arrive avec tous les cas). J'ai un script (appelé eclipse
) dans ~/usr/bin/
qui exécute Eclipse IDE.
Je peux ouvrir n'importe quel terminal et taper simplement eclipse
et il fonctionne bien comme vous vous en doutez.
Mais lorsque vous utilisez le .desktop
suivant fichier :
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Eclipse - Juno (4.2)
Icon=//eadn-wc01-5196795.nxedge.io/home/ben/.icons/eclipse.svg
Exec=eclipse
J'obtiens l'erreur :
Mais quand je change le Exec=
ligne vers :
Exec=/home/ben/usr/bin/eclipse
cela fonctionne parfaitement.
La documentation officielle des lanceurs Unity et des fichiers de bureau suggère que cela devrait fonctionner :
Exec est le chemin d'accès au fichier exécutable. Le chemin d'accès complet au fichier exécutable doit être utilisé uniquement s'il ne se trouve dans aucun des chemins spécifiés dans la variable $PATH. Par exemple, tous les fichiers qui se trouvent dans le chemin /usr/bin n'ont pas besoin d'avoir leur chemin complet spécifié dans le champ Exec, mais seulement leur nom de fichier.
Des suggestions sur ce qui se passe ?
Réponse acceptée :
Le tilde n'est pas développé dans .pam_environment
comme il le ferait dans un script de profil, et les fichiers de bureau ne font pas d'expansion du shell sur leur Exec
lignes comme le ferait le shell, il recherche donc un fichier nommé littéralement ~/usr/bin/eclipse
, qui bien sûr n'existe pas.
Remplacez le tilde dans l'affectation PATH par ${HOME} et cela semble fonctionner.