Ich erstelle .desktop
Dateien zur Verwendung im Unity Launcher.
Ich habe meinen eigenen Speicherort in meinem Home-Verzeichnis, wo ich meine ausführbaren Dateien ablege (~/usr/bin/
), die korrekt zu meinem PATH
hinzugefügt wurde Umgebungsvariable in meiner .pam_environment
Datei wie in der relevanten Ubuntu-Dokumentation angegeben.
Dies ist der Inhalt meiner .pam_environment
Datei:
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/
Was zu meinem PATH
führt Variable wie folgt:
[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/
Ich weiß, dass es zweimal angehängt wird, aber irgendetwas in der .pam_environment
Datei scheint zweimal hinzugefügt zu werden, egal was passiert, wenn die korrekte Syntax verwendet wird, die in der Ubuntu-Dokumentation empfohlen wird, auf die ich verwiesen habe.
Dies ist ein Beispiel für das Problem (es tritt in allen Fällen auf). Ich habe ein Skript (genannt eclipse
) in ~/usr/bin/
die Eclipse IDE ausführt.
Ich kann jedes Terminal öffnen und einfach eclipse
eingeben und es läuft gut, wie Sie es erwarten würden.
Aber wenn Sie den folgenden .desktop
verwenden Datei:
#!/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
Ich bekomme den Fehler:
Aber wenn ich die Exec=
ändere Linie zu:
Exec=/home/ben/usr/bin/eclipse
es funktioniert perfekt.
Die Dokumentation zu den offiziellen Unity-Launchern und Desktop-Dateien schlägt vor, dass dies funktionieren sollte:
Exec ist der Pfad zur ausführbaren Datei. Der vollständige Pfad zur ausführbaren Datei muss nur verwendet werden, falls er sich nicht in einem der in der $PATH-Variablen angegebenen Pfade befindet. Zum Beispiel muss für alle Dateien, die sich im Pfad /usr/bin befinden, nicht der vollständige Pfad im Exec-Feld angegeben werden, sondern nur der Dateiname.
Irgendwelche Vorschläge, was passiert?
Akzeptierte Antwort:
Die Tilde wird in .pam_environment
nicht erweitert wie es in einem Profilskript der Fall wäre, und Desktop-Dateien führen keine Shell-Erweiterung auf ihrem Exec
durch Zeilen so, wie es die Shell tun würde, also sucht sie nach einer Datei, die buchstäblich ~/usr/bin/eclipse
heißt , die es natürlich nicht gibt.
Ersetzen Sie die Tilde in der PATH-Zuweisung durch ${HOME} und es scheint zu funktionieren.