1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Wie beendet sich Terminal am Scriptende?

Dieses Thema im Forum "macOS & OS X" wurde erstellt von isidor, 22.01.09.

  1. isidor

    isidor Tokyo Rose

    Dabei seit:
    28.10.08
    Beiträge:
    67
    Yep,
    ich habe mir den einen oder anderen Helfershelfer in Form eines Shellscripts verwirklicht.
    Durch einen Alias auf dem Desktop startet so ein Shellscript per Doppelklick auf das Icon. Was mich etwas nervt ist, dass das Terminal Programm am Ende eines Shellscripts immer offen stehen bleibt und Terminal von Hand beendet werden muss.
    Kann mir jemand sagen, wie ich ein Shellscript gestalten muss, dass sich mit einem finalen "exit" auch Terminal endgültig beendet?
    Vielen Dank schon mal in die Runde!
     
  2. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    Falls es Dir nur um das Schließen des Shell-Fensters nach der Ausführung geht: Das kann man in den Einstellungen von Terminal aktivieren.
    Das Programm Terminal wird sich jedoch nicht automatisch beenden.

    Für solche Zwecke ist vielleicht praktischer, das Shellscript (sofern es zur Laufzeit keine Tastatureingaben entgegennimmt, sondern einfach in einem Rutsch abgearbeitet wird und sich dann beendet) in einem Applescript-Application-Bundle zu verpacken, dann hast Du eine .app-Datei, die Du auf den Desktop legen und jederzeit ausführen kannst.
     
  3. isidor

    isidor Tokyo Rose

    Dabei seit:
    28.10.08
    Beiträge:
    67
    Yep,
    die Einstellung habe ich auch schon gesehen. Aber leider funktioniert es nicht. Jedenfalls nicht so wie ich das Terminalprogramm starte: ich habe einen Alias auf dem Desktop, der auf das Shellscript im HomeDir verweist. Und zum Shellscript habe ich verdrahtet, das es mit Terminal geöffnet wird.

    An die Variante mit AppleScript hatte ich auch schon mal gedacht. Allerdings scheue ich AS immer irgendwie ... Aber da es im konkreten Fall sicher auch noch ein paar Vorteile mitbringt (z.B. zuverlässigeres mounten externer Drives etc ...), werde ich diesen Ansatz wohl weiter verfolgen. Vielen Dank für den Anschuppser den ich hier wohl nötig hatte!
     
  4. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    Es gab kürzlich in einer c't einen guten Artikel über das Ansprechen von Shellscripts aus einem AppleScript heraus. Das AppleScript dann als App-Bundle zu speichern, kann der Skritpeditor ganz einfach erledigen.
     
  5. isidor

    isidor Tokyo Rose

    Dabei seit:
    28.10.08
    Beiträge:
    67
    Hast Du noch nähere Angaben zum Artikel? Ich konnte ihn auf Anhieb nicht finden, benötige aber noch etwas Starthilfe für Applescript :(
    Ich bin jetzt soweit, das ich theoretisch mit
    do shell script "/mein/pfad/zu/meinscript.sh"
    ein Shellscript ausführen kann, aber ich bekomme im ScriptEditor die Fehlermeldung, dass die Environment Variable TERM nicht gesetzt wäre ...
     
  6. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    Hast Du die c't 25/2008 (vom 24.11.08)?
    Darin findet sich der Artikel "Grafische Hülle" auf Seite 206

    Zur Fehlermeldung: Die kenne ich nicht. Aber bei mir enthält (wenn ich im Terminal "echo $TERM") eingebe, die Variable TERM den Wert "xterm-color" .
     
  7. isidor

    isidor Tokyo Rose

    Dabei seit:
    28.10.08
    Beiträge:
    67
    Im Terminal sagt mir die Variable etwas. Auch bei mir ist der Inhalt "xterm-color". Die Felhermeldung wird allerdings von AppleScript ausgegeben. Das Environment ist also offenbar ein anderes und ich habe noch keine Ahnung wie ich das korrigieren kann. Nun ja, ich werde zunächst einmal den Artikel besorgen. Hey, vielen Dank für Deine Hilfe!
     
  8. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    Vielleicht noch ein Nachtrag:
    Ich selbst habe bisher erst ein AppleScript für ein Shellscript verwendet. Das Shellscript liegt in meinem Fall nicht innerhalb des App-Bundles (was wohl eigentlich eleganter wäre), weil ich es jederzeit auch ohne die App verwenden können möchte. (OK, ginge auch im Bundle, man müsste dann im Terminal halt noch ein paar Verzeichnisse tiefer wechseln).

    Das Skript sieht so aus:

    tell application "Finder"
    set skr to path to me
    set pwd to container of skr
    set pwd to quoted form of POSIX path of (pwd as Unicode text)
    end tell

    set output to do shell script "cd '" & pwd & "' && ./meinSkript.sh"

    display dialog output with title "Der Titel in " & pwd

    Der erste Teil dient nur dazu, vom Finder das Verzeichnis in Erfahrung zu bringen, in dem das .app-File liegt. Dort wird dann auch nach dem Shellscript gesucht. (Liegt es direkt im Bundle, sollte das einfacher gehen.) Dann wird per CD in das Verzeichnis gewechselt und dort das Script ausgeführt. Die Ausgaben des Scripts werden anschließend in einer Dialogbox angezeigt.

    Vielleicht hilft's.
     
  9. isidor

    isidor Tokyo Rose

    Dabei seit:
    28.10.08
    Beiträge:
    67
    Yep,
    der Vollständigkeit halber:
    Das Problem war, das ich das "do shell script" commando nicht in einen Tell application "Terminal" Block gesetzt habe.
    Die Version
    Tell application "Terminal"
    do shell script ...
    end tell

    funktioniert einwandfrei. Über AppleScript sollte Terminal auch beendet werden.
    Vielen Dank nochmal an Dich gKar für Deine hilfreichen Anregungen!
     
  10. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    Merkwürdig. In meinem Applescript (s.o.) steht do shellscript auch nicht im „tell application "Finder"“-Block. Aber das ist natürlich dann nötig, wenn der Ausdruck, der danach folgt (was ist auszuführen?), nur von Finder ausgewertet werden kann.

    Aber gerne doch. (Freue mich im Zweifel auch immer über Karma ;) )
     
  11. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.567
    "do shell script" funktioniert doch komplett losgelöst vom Terminal...
    Ich habe so einige AppleScript-Apps, wo das der einzige Befehl im Script ist
    (z.B. do shell script "/srv/bxa/cleanup.sh" )
     
  12. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    Oh, da hatte ich das letzte Posting doch glatt falsch gelesen und tell Finder statt tell Terminal gelesen. Ja, von Terminal ist do shell script auf jeden Fall unabhängig.
     
  13. isidor

    isidor Tokyo Rose

    Dabei seit:
    28.10.08
    Beiträge:
    67
    Yep,
    Bananenbieger und gKar, Ihr habt natürlich vollkommen recht. Do shell script funzt auch bei mir jetzt losgelöst von Terminal. Mein ursprüngliches Testergebnis muss das Resultat einer Nebenwirkung gewesen sein. Aus welchen Gründen auch immer - jetzt geht es wunderbar.
    Vielen Dank nochmals!
     

Diese Seite empfehlen