Sepertinya ketika Terminal tidak terbuka, maka tell application Terminalbuka Terminal dengan jendela pertama dan do scriptbuka jendela lain (karena do scriptseharusnya membuka jendela baru).
Solusi parsial adalah do script ... in window 1, yang memaksa untuk menjalankan skrip di jendela yang baru dibuka, tetapi ketika Terminal digunakan sebelumnya, ini akan membajak jendela yang ada (dan mungkin konteks yang tidak sesuai).
Script berikut membantu saya:
if application "Terminal" is running then
tell application "Terminal"
# do script without "in window" will open a new window
do script "echo HELLO"
activate
end tell
else
tell application "Terminal"
# window 1 is guaranteed to be recently opened window
do script "echo HELLO" in window 1
activate
end tell
end if
(Saya mendapat inspirasi dari proposal adayzdone , tetapi itu tidak berhasil untuk saya (di El Capitan). Sepertinya setelah tell application "Terminal"kondisi not (exists window 1)tidak pernah berlaku.)
do script "myscript"?