Ich habe die AppleEvents protokolliert, die von einem Terminalfenster gesendet werden. Das Ereignis, das der osascript
Befehl an den AppleScript-Compiler / Interpreter sendet, wurde nicht protokolliert. Woher?
Im Einzelnen besteht das folgende Argument aus drei Hypothesen, denen ihre logische Schlussfolgerung folgt. Das Experiment zeigt jedoch, dass die Schlussfolgerung falsch ist. Daher ist das Argument fehlerhaft. Leider weiß ich nicht, warum es fehlerhaft ist. Wo bricht es?
Hypothesen
macOS verfügt über einen integrierten AppleScript-Compiler / Interpreter, der als OSA-Komponente installiert ist.
Der Terminal-Befehl
osascript
"kennt" AppleScript nicht. Wenn eine Zeile AppleScript-Code übergeben wird, wird dieser über die OSA-Architektur an den AppleScript-Compiler / Interpreter weitergeleitet, indem ein AppleEvent gesendet wird.Wenn die folgende Codezeile im Terminal ausgeführt wird, werden alle AppleEvents, die von Befehlen gesendet werden, die anschließend im selben Terminalfenster ausgeführt werden, im Terminal ausgedruckt:
export AEDebugSends=1
Fazit
Nachdem Sie die folgenden zwei Befehle in einem Terminalfenster ausgeführt haben:
export AEDebugSends=1
osascript -e 'tell application "Finder" to activate'
Es sollten zwei AppleEvents ausgedruckt werden:
- Einer, der vom
osascript
AppleScript-Compiler / Interpreter geleitet wird, um den Befehl 'Tell Application "Finder" zum Aktivieren' zu kompilieren und auszuführen. - Einer, der vom AppleScript-Compiler / Interpreter an Finder weitergeleitet wurde, um sich selbst zu aktivieren.
Tatsächliche Ausgabe
Es wird nur ein AppleEvent ausgedruckt, das an den Finder gesendet wurde:
AE2000 (4085): Senden eines Ereignisses:
------ oo Beginn des Ereignisses oo ------
aevt ('misc' \ 'actv' transactionID = 0 sourcePSN = [0x0, e00e "Finder"] timeout = 7200 eventSource = 3 {& 'subj': null (), & 'csig': magn (65536)})
------ oo Ende des Ereignisses oo ------