Ich möchte die Variable 'Path' in einer .desktop-Datei relativ zu dem Speicherort festlegen, an dem sich die Desktop-Datei befindet, und das kann ich nicht.
Wenn ich es nicht deklariere oder leer lege, wird standardmäßig mein Home-Ordner verwendet, unabhängig davon, von wo aus ich es ausführe. und es werden keine Werte relativ zu meinem aktuellen Speicherort im Dateisystem akzeptiert.
Antworten:
Sie können das CWD nicht in einer .desktop-Datei festlegen. Wenn Sie möchten, dass eine Anwendung eine bestimmte CWD hat, müssen Sie ein einfaches Wrapper-Skript für die Anwendung schreiben, das ungefähr so aussieht:
Sie können
your_program
dort$@
das Skript durch your_program als Argument ersetzen und ausführen, zrun-in-dir.sh your_program
. Auf diese Weise können Sie dasselbe Programm verwenden, um jedes Programm, das Sie starten möchten, in dieses Verzeichnis zu verpacken.quelle
Sie können dies umgehen, indem Sie ein Inline-Bash-Miniskript auf Ihrem Exec verwenden. Dadurch wird der Pfad der .desktop-Datei zu PATH hinzugefügt, bevor Sie Ihren Befehl ausführen.
% k wird durch den Pfad der Desktop-Datei selbst ersetzt. Der
dirname
Befehl schneidet den Dateinamen ab und lässt nur das Verzeichnis übrig. Sobald PATH so eingestellt ist,your_command
kann es ohne vollständigen Pfad aufgerufen werden.quelle
Ich habe das benutzt:
% K ist der vollständige Name der .desktop-Datei einschließlich ihres Pfads. Es wird dann von dirname verwendet, um einen Speicherort abzurufen und das Verzeichnis in diesen Speicherort zu ändern. Jetzt, da es am richtigen Ort ist, findet es das Skript und führt es aus.
quelle
Bei Verzeichnisnamen mit Leerzeichen im Namen funktionierte dies schließlich für mich:
Gutschrift an /unix//a/144428/61349
quelle
Das hat bei mir funktioniert Ubuntu 14.04:
Die neueste Spezifikation besagt, dass % k auf den Speicherort der Desktop-Datei verweist:
quelle