macos 中可通过 openinterminal、automator、launchagent 或原生 applescript 实现自定义脚本触发的终端菜单工具:openinterminal 支持脚本定制与路径转义;automator 可创建 finder 右键菜单项并设快捷键;launchagent 实现登录自动执行;终端自身支持 applescript 控制。
在 macos 中配置支持自定义脚本触发的终端菜单工具,核心是让 finder 或系统菜单能一键执行 applescript 或 shell 脚本,并精准打开终端、跳转目录、运行命令。不需要第三方 app 也能实现,但用 openinterminal 这类工具会更灵活、更稳定。
用 OpenInTerminal 配置自定义脚本触发
OpenInTerminal 是专为 Finder 设计的菜单栏工具,原生支持 AppleScript 生成与终端行为定制:
- 安装后,在菜单栏点击图标 → “Preferences” → “Scripts”,可查看已安装脚本状态;它会自动把生成的 AppleScript 放入
$HOME/Library/Application Scripts/,确保 Finder 能调用 - 修改
ScriptManager.swift中的getTerminalNewTabAppleScript()方法,就能控制“新开标签页时是否激活 Terminal、是否 cd 到当前路径、是否执行预设命令”等逻辑 - 在
DefaultsManager.swift里定义自己的终端启动命令,比如让 iTerm 启动时自动运行git status,只需填入类似open -a iTerm --args -o -e "cd {path}; git status"的字符串 - 路径中含空格或特殊字符?别担心,工具内部已用
terminalPathEscaped()方法做了安全转义,你只需传原始路径即可
用 Automator 创建 Finder 服务(无需编码)
如果你偏好图形化操作,Automator 可快速打包 AppleScript 成 Finder 右键菜单项:
- 打开 Automator → 新建“快速操作”(macOS 12+)或“服务”(旧版)→ 左侧搜索“运行 AppleScript”,拖入右侧
- 脚本框内粘贴:
on run {input, parameters}<br> set thePath to POSIX path of (item 1 of input)<br> do shell script "open -a Terminal " & quoted form of ("cd " & quoted form of thePath & "; exec zsh")<br>end run - 保存时命名如“在终端中打开此处”,它会自动出现在 Finder 右键菜单的“快速操作”子菜单里
- 如需全局快捷键,进“系统设置 → 键盘 → 快捷键 → 服务”,找到刚建的条目并分配组合键(如 ⌘⌥T)
用 LaunchAgent 实现登录后自动触发终端脚本
适合需要开机即运行初始化命令(如启动本地开发服务、同步配置)的场景:
- 写一个 shell 脚本(如
~/bin/start-dev.sh),加上可执行权限:chmod +x ~/bin/start-dev.sh - 创建
~/Library/LaunchAgents/local.start-dev.plist,内容包含:<key>RunAtLoad</key><true></true><br><key>ProgramArguments</key><br><array><br> <string>/bin/zsh</string><br> <string>-c</string><br> <string>source ~/.zshrc; ~/bin/start-dev.sh</string><br></array>
- 执行
launchctl load ~/Library/LaunchAgents/local.start-dev.plist加载,下次登录即生效 - 注意:它不会弹出终端窗口,若需可视化,可在脚本中加
open -a Terminal -n --args -t -e "cd ~/project; npm run dev"
终端自身支持脚本触发的隐藏能力
“终端” App 本身就能被 AppleScript 控制,不依赖外部工具:
- 打开“脚本编辑器”,把“终端”拖到图标上,就能查看它的 AppleScript 词典——里面明确列出了
do script、activate、set current settings等指令 - 一段可直接运行的 AppleScript 示例:
tell application "Terminal"<br> if not (exists window 1) then do script ""<br> do script "cd ~/Documents; ls -la" in window 1<br> activate<br>end tell
- 把这个脚本导出为应用程序,就能像普通 App 一样添加到 Dock、登录项或绑定快捷键
- 也可用
osascript -e '...'在 shell 中直接调用,方便集成进其他自动化流程











