ubuntuusers.de

bash-Script öffnet sich nicht im Terminalfenster

Status: Ungelöst | Ubuntu-Version: Ubuntu 15.04 (Vivid Vervet)
Antworten |

thdeitmer

Anmeldungsdatum:
15. Januar 2015

Beiträge: 36

Hallo,

seit knapp einem Jahr benutze ich unter Lubuntu ein Bash-Script, dass ein Dokument vom Scanner einließt und auf dem Rechner abspeichert. In dem Script werden einige Abfragen von der Tastatur verlangt, zB der Dateiname oder ob es sich um einseitige oder mehrseitige Dokumente handelt. Eingaben und Ausgaben liefen immer über ein Terminalfenster, welches mit dem Start des Scripts geöffnet wurde und erst nach dem letzten Schritt wieder geschlossen wird.

Nun hab ich mir einen besseren PC mit aktuellem Ubuntu besorgt. Hier läuft das Script aber nicht mehr. Ich hab es ausführbar gemacht, und es scheint auch im Hintergrund was zu machen (denn als Ergebnis erhalte ich eine leere Datei). Aber das Terminalfenster mit den Ein- und Ausgaben öffnet sich nicht.

Weiß jemand, was hier schief läuft?

Viele Grüße

Thomas_Do Team-Icon

Moderator
Avatar von Thomas_Do

Anmeldungsdatum:
24. November 2009

Beiträge: 8808

Wie rufst Du das Script denn auf?

thdeitmer

(Themenstarter)

Anmeldungsdatum:
15. Januar 2015

Beiträge: 36

mit einem Doppelklick auf das Symbol (vom Dateimanager aus - Nautilus?), direkt in dem Verzeichnis, wo auch die eingescannten Dateien abgelegt werden sollen. Da hab ich auch das Script gespeichert.

Damals unter Lubuntu hatte ich mir ein Symbol auf den Desktop gelegt, das möchte ich jetzt auch mal wieder machen. Oder vielleicht links in diese Programmleiste. Aber dafür muss das Script ja erstmal laufen.

Aha, noch was: gerade getestet! Wenn ich im Terminalfenster in mein Verzeichnis wechsel und dort "bash scriptname" aufrufe, klappt das Script einwandfrei. Scheinbar muss das Terminalfenster vorher offen sein. Aber warum wird es nicht vom Script geöffnet? Ich starte doch mit #!/bin/bash und habe als nächstes sogar meine echo- und read-Anweisungen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

In der Kommandozeile kannst Du auch bash ... aufrufen, ohne dass sich ein neues Fenster öffnet. Man kann einen Starter erstellen und da in den Einstellungen irgendwo sagen, dass ein Fenster geöffnet werden soll.

thdeitmer

(Themenstarter)

Anmeldungsdatum:
15. Januar 2015

Beiträge: 36

ja genau, Starter - Einstellungen - Fenster öffnen. Und wie oder wo mache ich das? Diese Option konnte ich noch nicht finden. Unter Lubuntu war das automatisch drin. Ubuntu verhält sich wohl irgendwie anders.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

thdeitmer schrieb:

ja genau, Starter - Einstellungen - Fenster öffnen. Und wie oder wo mache ich das? Diese Option konnte ich noch nicht finden. Unter Lubuntu war das automatisch drin. Ubuntu verhält sich wohl irgendwie anders.

Du musst gar nicht so weit weg suchen. ☺

thdeitmer

(Themenstarter)

Anmeldungsdatum:
15. Januar 2015

Beiträge: 36

hmm, das habe ich jetzt mal studiert. Auch einiges ausprobiert. Aber ich bekomme das Skript einfach nicht im Terminalfenster ans laufen. Kann mir mal jemand die richtigen Schritte vorsagen? Vielen Dank.

Thomas_Do Team-Icon

Moderator
Avatar von Thomas_Do

Anmeldungsdatum:
24. November 2009

Beiträge: 8808

thdeitmer schrieb:

Auch einiges ausprobiert. Aber ich bekomme das Skript einfach nicht im Terminalfenster ans laufen.

Bitte poste, was Du bereits gemacht hast und ggf. welche Fehler es gab. Hat Du eine .desktop-datei erstellt? Wie sieht die aus?

thdeitmer

(Themenstarter)

Anmeldungsdatum:
15. Januar 2015

Beiträge: 36

sorry Leute! Hatte Urlaub und einfach "zu wenig Zeit"......

Nun bin ich wieder da und muss mal endlich meine Archivierung auf Vordermann bringen. Dazu sollte mein Script auch wieder laufen.

Folgendes habe ich nun erledigt:

1. eine Textdatei mit Namen "myOCRscan" erstellt, und diese mit folgendem Inhalt gefüttert:

[Desktop Entry]
Name=myOCRscan
Name[de]=myOCRscan
GenericName=myOCRscan
GenericName[de]=myOCRscan
Exec=/Dokumente/Archivierung/myOCRscan.sh
Terminal=true
Type=Application
StartupNotify=false

2. die Textdatei nach "local/share/applications" kopiert und dort in "myOCRscan.desktop" umbenannt

3. die Datei über Rechtsklick-Eigenschaften mit dem Häkchen ausführbar gemacht

4. zuletzt die Datei zurück auf den Desktop kopiert

Wenn ich sie nun starte, erhalte ich folgende Fehlermeldung: "Beim Ausführen der Anwendung ist ein Fehler aufgetreten" ohne weitere Fehlernummern, Erklärungen oder Hilfebutton.

Die eigentliche Script-Datei im Dokumente/Archivierung-Verzeichnis ist zwar als Textdatei gespeichert, hat aber in der ersten Zeile "#!/usr/bin/bash" stehen und wurde ebenfalls über Rechtsklick-Eigenschaften startbar gemacht. Hier kann man allerdings noch wählen, womit die Datei standardmäßig geöffnet werden soll. Dort habe ich "gedit", "Anwendung starten", "KTelnetService" und "andere Anwendung" zur Auswahl.

Wie komme ich nun weiter? Also wie schon gesagt, im Terminalfenster kann ich das Script ohne Probleme mit "sh myOCRscan.sh" starten.

Was habe ich nun zu tun? Wer weiß Rat? Vielen Dank für Eure Tipps!

thdeitmer

(Themenstarter)

Anmeldungsdatum:
15. Januar 2015

Beiträge: 36

UPDATE!

kurz mal richtig hingesehen und den Pfad zum Script überarbeitet. Das lautet nun: "Exec=/home/thdeitmer/Dokumente/Archivierung/myOCRscan.sh"

Es scheint richtiger zu sein und es tut sich ganz was anderes. Ich bekomme nun in gefährlich roter Schrift folgende Fehlermeldung in einem geöffneten Terminalfenster:

"Beim Erzeugen des Kindprozesses für dieses Terminal ist ein Fehler aufgetreten. Kindprozess »/home/thdeitmer/Dokumente/Archivierung/myOCRscan.sh« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)" und dazu die Button: "Profileinstellungen" und "erneut starten".

Es sieht jawohl so aus, als wenn meine Desktop-Datei nun irgendwas machen würde, aber nicht mit meinem Script zusammenarbeiten möchte. Aber wie gesagt, öffne ich manuell ein Terminalfenster und rufe dort das Script mit "sh" auf, dann klappt es einwandfrei.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

thdeitmer schrieb:

Was habe ich nun zu tun? Wer weiß Rat? Vielen Dank für Eure Tipps!

Bitte lies einmal unsere Wiki-Seite, die ich oben verlinkt habe - insbesondere den Teil über "Shebang".

thdeitmer

(Themenstarter)

Anmeldungsdatum:
15. Januar 2015

Beiträge: 36

Hallo rklm,

danke sehr für diesen Tip. Das zielt wahrscheinlich in die richtige Richtung. Ich hatte mir das schon mal durchgelesen, aber irgendwie nur Bahnhof verstanden.

Muss ich das "#!/usr/bin/xdg-open" in die erste Zeile meiner Desktop-Datei (also noch vor dem [Desktop]) schreiben, oder besser innerhalb der eckigen Klammern? Oder gehört das in die erste Zeile meines eigentlichen Scripts (und dort entweder vor oder anstelle von "#!/usr/bin/sh")?

Sorry, wenn die Fragen dumm daher kommen. Ich bin noch nicht ewig Ubuntu-User und lerne noch ☺

Vielen Dank für die Geduld!

Idefix111

Anmeldungsdatum:
2. Oktober 2013

Beiträge: 71

Hi, wie wäre es, wenn du einen starter anlegster, der eine konsole öffnet und als parameter dein Skript mit übergibst. Also so was wie:

xterm -e /pfad/zum/skript/name.sh

das öffnet dann XTerm mit deinem Skript

  • Idefix111

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

Idefix111 schrieb:

wie wäre es, wenn du einen starter anlegster, der eine konsole öffnet und als parameter dein Skript mit übergibst. Also so was wie:

xterm -e /pfad/zum/skript/name.sh

das öffnet dann XTerm mit deinem Skript

Das sollte mit xdg-open und dem entsprechenden Parameter in der *.desktop-Datei nicht nötig sein - ggf. sogar eher kontraproduktiv.

Idefix111

Anmeldungsdatum:
2. Oktober 2013

Beiträge: 71

xdg-open könnte aber den gleichen Effekt wie zuvor haben, das kein Terminal geöffnet wird. Zurzeit, will der Endanwender ja nur das sich ein Terminal mit seinem Skript öffnet und er die ausgaben und eingaben lesen / schreiben kann.

Für den Thread ersteller:

Du könntest noch eine Anweisung hinzufügen, damit das Terminal sich nicht gleich schließt und du die Ausgaben noch lesen kannst.

Und ersetze nicht #!/bin/bash durch den ausführungspfad von xdg-open. Danach wäre das Skript nicht zu gebrauchen, bis du die Zeile wieder umänderst.

  • Idefix111

PS:

1
Exec=/usr/bin/xdg-open /Dokumente/Archivierung/myOCRscan.sh
Antworten |