GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Desktop-Dateien scheinen $path nicht korrekt zu verwenden?

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.


Ubuntu
  1. Wie füge ich einen Pfad zu Pfad richtig hinzu?

  2. Eine neue benutzerdefinierte Sitzung hinzufügen?

  3. Desktop-Ordner und Dateien verschwunden?

  4. Wie kopiert man Dateien von Wine auf den Desktop?

  5. So verwenden Sie Ubuntu Server Disk Top

2 Möglichkeiten zum Verschlüsseln von Dropbox-Dateien auf Ubuntu Desktop &Server

So verwenden Sie RAR-Dateien in Ubuntu Linux [Kurztipp]

So verwenden Sie BleachBit zur Optimierung von Ubuntu Linux

Verwenden von Dateien und Ordnern auf dem Desktop-Bildschirm in Ubuntu

So installieren und verwenden Sie ProtonVPN unter Desktop-Linux

Möglichkeit, Dateien vom Desktop auf andere Apps zu ziehen und dort abzulegen?