Parece que cuando el Terminal no está abierto, tell application Terminal
abre el Terminal con la primera ventana y do script
abre otra ventana (porque se supone que do script
abre una nueva ventana).
La solución parcial es do script ... in window 1
, que obliga a ejecutar el script en una ventana recientemente abierta, pero cuando Terminal estaba en uso antes, esto secuestraría una ventana existente (y posiblemente un contexto inadecuado).
El siguiente script hizo el truco por mí:
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
(Me inspiré en la propuesta de adayzdone , pero no funcionó para mí (en El Capitán). Parece que después de tell application "Terminal"
la condición not (exists window 1)
nunca se cumple.)