staging.inyokaproject.org

Shell script vom Desktop wird nur erste Zeile ausgeführt

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

kennney

Anmeldungsdatum:
31. Dezember 2023

Beiträge: Zähle...

Hallo

Ich habe hier das OS POP!_OS installiert.

Eine Frage habe ich, wenn man eine .desktop Datei mit einem shell Script verknüpft und dieses dann startet.

Also ich habe hier auf meiner Windows Platte die Steam Bibliotek, die mounte ich halt in ein Verzeichnis, bevor ich Steam starte. Das Script sieht so aus

sudo mount -o rw,uid=kennney,gid=kennney /dev/sdb2 /mnt
sleep 2
steam &

die Desktopdatei sieht so aus

[Desktop Entry]
Comment[de_DE]=
Comment=
Exec=/home/kennney/steammount.sh
GenericName[de_DE]=
GenericName=
Icon=steam
MimeType=
Name[de_DE]=Steam-Start
Name=Steam-Start
Path=
StartupNotify=true
Terminal=true
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

Wenn ich das Script direkt in einem Terminal ausführe dann wird das Laufwerk gemountet und anschließend auch Stem gestartet.

Wenn ich aber die Desktopdatei doppelt anklicke, wird nur der mount Befehl ausgeführt.

Kann mir da einer verraten warum das so ist?

Danke

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Keine Ahnung, aber ich würde es mal mit einer ordentlichen Shebang-Zeile versuchen, z.B.

1
#!/bin/sh

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17531

Abgesehen von der Shebang, Pack das ganze doch in die /etc/fstab mit dem "users" Flag, dann kannst du es ohne sudo mounten.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

kennney schrieb:

[…] Kann mir da einer verraten warum das so ist?

Das vom Skript gestartete Programm wird beendet, wenn sein betreuendes Terminal beendet wird.

kennney

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2023

Beiträge: 7

rklm schrieb:

Keine Ahnung, aber ich würde es mal mit einer ordentlichen Shebang-Zeile versuchen, z.B.

1
#!/bin/sh

das Klappt leider nicht

kB schrieb:

kennney schrieb:

[…] Kann mir da einer verraten warum das so ist?

Das vom Skript gestartete Programm wird beendet, wenn sein betreuendes Terminal beendet wird.

Ok, das klingt logisch. Kann ich das irgendwie lösen, daß es dennoch geht?

Ich dachte wenn ich das mit & starte wäre es egal ob das Terminal dann geschlossen wird.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17531

befehl &

Legt den Befehl in den Hintergrund der aktuellen Shell, du kannst ihn aber so entkoppeln:

nohup befehl &

Notwendig ist das alles aber nicht, du kannst einfach das & entfernen und den Befehl im Vordergrund laufen lassen, ob da jetzt eine bash mehr oder weniger läuft ist relativ egal für das Betriebssystem.

Wir haben dazu auch einen Artikel im Wiki ▶ nohup

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 941

Kann ich das irgendwie lösen, daß es dennoch geht?

So mglw. im Script:(Desktop Datei ginge auch, bash müsste dann noch dazu)

Dein-Terminal -e oder -c "sudo mount -o rw,uid=kennney,gid=kennney /dev/sdb2 /mnt;sleep 2;steam &"

Was die Commandoausführung betrifft in der Hilfe des Terminals nachsehen.

In der Desktop Datei dann "Terminal=false".

Im Prinzip sollte reichen:

[Desktop Entry]
Name=Steam-Start
Type=Application
Exec=/home/kennney/steammount.sh
Icon=steam
Terminal=false

edit

Type vergessen

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

kennney schrieb:

[…] kB schrieb:

kennney schrieb:

[…] Kann mir da einer verraten warum das so ist?

Das vom Skript gestartete Programm wird beendet, wenn sein betreuendes Terminal beendet wird.

Ok, das klingt logisch. Kann ich das irgendwie lösen, daß es dennoch geht?

Entweder das Terminal offen halten oder das Programm vom Terminal entkoppeln. Die einfachste Möglichkeit ist vermutlich, im Skript das Zeichen & wegzulassen.

kennney

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2023

Beiträge: 7

kB schrieb:

Entweder das Terminal offen halten oder das Programm vom Terminal entkoppeln. Die einfachste Möglichkeit ist vermutlich, im Skript das Zeichen & wegzulassen.

HAbe nun das & weggelassen, damit funktioniert es nun. Vielen Dank euch allen. Den Befehl nohup habe ich bis dato noch nicht gekannt, schaue ich mir mal bei Gelegenheit an.

Antworten |