R. F. schrieb:
> Was meinst du mit current working directory?
> In der Konsole gehe ich davon aus, es ist das Verzeichnis, in dem ich
> mich gerade befinde.
Eine Terminal leitet nur die Eingaben und Ausgaben an Programme weiter,
dessen file descriptoren für standard Eingabe (fd0) und standard Ausgabe
(fd1) mit diesem verbunden sind. Ich verstehe unter Konsole gewöhnlich
die Linux console, aber einige meinen damit auch Grafische Terminal
Emulatoren, aus sicht eines Programmes macht das aber keinen
Unterschied. Nach dem Login bei einer Linux Konsole, oder dem öffnen
eines Terminal Emulators, wird normalerweise die default Shell des
momentanen Users geöffnet, also jenachdem bash, sh, zsh, etc. Wenn man
ein Programm wie z.B. bash startet, bezeichnet man diese Instanz des
Programms als Prozess. Jeder Prozess hat diverse Ressourcen, die diesem
gehören, dazu gehören unter anderem file descriptoren, environment
variablen, das current working directory, eine Effective, Real und Saved
UID und viele andere Dinge. unter proc kann man von allen Prozessen
diese Ressurcen anzeigen lassen.
Das current working directory ist also eine Eigenschaft eines Prozesses,
und das Verzeichnis in dem du dich in einer Konsole befindest ist
eigentlich das current working directory der shell welche gerade in der
Konsole läuft.
Dies bedeutet, dass ein relativer Pfad, welcher von einem Programm oder
Script geöffnet wird, nicht relativ zum Pfad des ausführbaren Programms
oder Scripts ist, sondern relativ zu dessen Current Working Directory.
Dieses wird vom Programm, welches dieses gestartet hat, übernommen.
Wenn du die "start.sh" anklickst, wird für dessen Current Working
Directory vermutlich von deinem Dateimanager der Ordner verwendet, in
welchem sich dieses Script befindet. Öffnest du die start.sh aber so wie
jetzt über die .desktop Datei, wird dessen Current Working Directory
sonst wo sein, vermutlich dort, wo sich der Desktop befindet. Deshalb
muss das Current Working Directory vor dem Starten von start.sh richtig
gesetzt werden. Versuche mal folgendes:
1 | [Desktop Entry]
|
2 | Name=Burn-O-Mat
|
3 | Icon=/home/ruediger/AVR8_Burn-O-Mat/AVR8_Burn-O-Mat.png
|
4 | Exec=/bin/sh -c 'cd /home/ruediger/AVR8_Burn-O-Mat/ && /home/ruediger/AVR8_Burn-O-Mat/start.sh'
|
5 | Type=Application
|
6 | Terminal=false
|
7 | Categories=Development;
|
8 | StartupNotify=true
|