Shell-Skript wird auf dem Terminal nicht ausgeführt

Shell-Skript wird auf dem Terminal nicht ausgeführt

Ich habe eine Datei scriptA.shauf dem Desktop erstellt und ausführbar gemacht. Das war dann der Inhalt:

#!/bin/bash
sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

Ich möchte darauf doppelklicken, um das Terminal zu öffnen und die beiden Befehle darin auszuführen und das Terminal geöffnet zu lassen. Aber was tatsächlich passiert, nachdem ich darauf doppelklicke und die run with terminalOption wähle, ist, dass das Terminal für eine Sekunde geöffnet wird und sich dann selbst schließt. Ich weiß nicht, warum das passiert, daher wäre ich dankbar, wenn mir jemand erklären könnte, warum das passiert und wie man es beheben kann.

Antwort1

Sie möchten es wahrscheinlich verwenden, gksudowenn Sie es von Ihrem Desktop aus starten möchten. Daraufhin wird ein Fenster geöffnet, in dem Sie nach Ihrem Kennwort gefragt werden.

#!/bin/bash
gksudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

Um Fehler zu beheben, möchten Sie das Skript wahrscheinlich zuerst in Ihrem Terminal ausführen. Auf diese Weise wird es nicht direkt nach dem Drucken einiger Fehlermeldungen geschlossen.


Aktualisieren

Eine Möglichkeit hierzu besteht darin, eine Datei wie folgt zu erstellen:

/home/user_name/.gnome2/panel2.d/default/launchers/script_name.desktop

Geben Sie dann etwa Folgendes ein:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=gdu-category-peripheral
Name[en_US]=Receiving fax
Exec=gksu /usr/bin/gnome-terminal
Comment[en_US]=Some description...
Name=My Script
Comment=Start my script
Icon=gnome-panel-launcher

Das funktioniert bei mir im Allgemeinen gut. Das Gnome-Terminal akzeptiert Parameter, sodass Sie verschiedene Einstellungen ändern können.

Verwenden Sie --working-directory=...anstelle Ihres cd ...Befehls. Um bestimmte Variablen abzurufen, möchten Sie wahrscheinlich die --profile=...Option verwenden.

Exec=gksu -u userA /usr/bin/gnome-terminal --profile=/home/userA/profile --working-directory=/home/userA/scripts

Erstellen Sie dann das Profilskript für die Variable:

# In /home/userA/profile
PACKAGE_PATH=/home/userA/package1

Natürlich können Sie im Profilskript auch jeden anderen Alias ​​oder alles andere hinzufügen, was Sie benötigen.

Antwort2

Wenn Sie die Option „In einem Terminalfenster ausführen“ wählen, wird das (Gnome-)Terminalfenster standardmäßig geschlossen, nachdem es beendet ist. Estutöffnen, da du erwähnst, dass es sich für eine Sekunde öffnet. Du kannst es machenbleibenÖffnen Sie es, indem Sie die Einstellung in Ihrem Terminalprofil ändern:

Wählen Sie im Menü (Gnome-Terminal) „Bearbeiten“ > „Profileinstellungen“ > „Titel und Befehl“. Wählen Sie bei der Option „Wenn Befehl beendet wird“ „Terminal offen halten“.

Das sollte funktionieren.

Bildbeschreibung hier eingeben

verwandte Informationen