• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Wie beendet sich Terminal am Scriptende?

isidor

Carola
Registriert
28.10.08
Beiträge
112
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!
 

gKar

Maunzenapfel
Registriert
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.
 

isidor

Carola
Registriert
28.10.08
Beiträge
112
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!
 

gKar

Maunzenapfel
Registriert
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.
 

isidor

Carola
Registriert
28.10.08
Beiträge
112
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 ...
 

gKar

Maunzenapfel
Registriert
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" .
 

isidor

Carola
Registriert
28.10.08
Beiträge
112
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!
 

gKar

Maunzenapfel
Registriert
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.
 

isidor

Carola
Registriert
28.10.08
Beiträge
112
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!
 

gKar

Maunzenapfel
Registriert
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.

Vielen Dank nochmal an Dich gKar für Deine hilfreichen Anregungen!
Aber gerne doch. (Freue mich im Zweifel auch immer über Karma ;) )
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
"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" )
 

gKar

Maunzenapfel
Registriert
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.
 

isidor

Carola
Registriert
28.10.08
Beiträge
112
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!