如何避免macOS Automator的Terminal SSH脚本打开两个窗口
解决Automator SSH脚本首次运行弹出本地Terminal窗口的问题
问题原因
首次启动Terminal应用时,它会自动创建一个默认的本地Shell窗口,之后脚本执行do script又会生成一个运行SSH的窗口,因此出现两个窗口;后续运行时Terminal已在后台,不会再生成默认窗口,所以只有SSH窗口。
解决方案
可以通过脚本先处理Terminal首次启动时的默认窗口,以下是两种可靠的实现方式:
方式一:仅首次启动时关闭默认窗口
这个方法会判断Terminal是否正在运行,只有首次启动时才关闭自动生成的默认窗口,后续运行时保留已有窗口并新增SSH窗口:
tell application "Terminal" set isRunning to running if not isRunning then -- 启动Terminal但不激活,此时会生成默认窗口 launch -- 关闭这个默认的本地窗口 close windows end if -- 执行SSH命令,生成远程连接窗口 do script "ssh robot@example.com" -- 激活Terminal窗口 activate end tell
方式二:每次运行都清空现有窗口再创建SSH窗口
如果希望每次运行脚本都只保留新的SSH窗口,可以用这个写法,无论Terminal是否运行,都会先关闭所有现有窗口再创建新的SSH窗口:
tell application "Terminal" -- 关闭所有已打开的Terminal窗口 close windows -- 执行SSH命令 do script "ssh robot@example.com" activate end tell
验证效果
将修改后的脚本替换原Automator脚本,首次运行时就只会弹出远程SSH的Terminal窗口,不会出现额外的本地窗口。
内容的提问来源于stack exchange,提问作者Robot
相关产品推荐
相关产品推荐

