在macos中为“终端”添加自定义脚本触发菜单项,核心是通过automator创建“快速操作”绑定至服务菜单,或在终端设置中配置shell启动命令;前者支持快捷键/右键调用,后者仅限新窗口自动执行。
在 macos 中,为“终端”添加自定义脚本触发的菜单项,核心是让脚本出现在终端的服务菜单(services menu)或通过终端内置的 shell 脚本支持直接调用。系统原生不提供“右键菜单加脚本”的图形界面入口,但可通过以下两种可靠、稳定、无需第三方工具的方式实现:
方式一:用 Automator 创建“快速操作”,再绑定到终端服务菜单
这是最兼容、最易维护的原生方案,适合多数用户:
- 打开 Automator(Command + 空格 → 输入“Automator”)→ 新建文档 → 选择“快速操作”(不是“应用程序”或“工作流程”)
- 在左侧动作库中搜索“运行 Shell 脚本”,拖入右侧编辑区
- 将“传递输入”设为“作为参数”,并在脚本框中写你的命令,例如:
echo "当前路径: $(pwd)" >> ~/terminal-log.txt - 保存时命名为有意义的名称,如“记录当前路径”
- 前往系统设置 > 键盘 > 键盘快捷键 > 服务 → 在右侧“通用”或“文本”分类下找到你刚保存的名称 → 点击右侧空白处,设置快捷键(如 Cmd + Shift + P)
- 在终端窗口中,确保光标聚焦(任意位置点击一下),按下快捷键即可执行;也可右键选中文字后,在上下文菜单的“服务”子菜单里看到该选项
方式二:在终端偏好设置中添加 Shell 脚本启动项(仅限新窗口/标签页)
如果你希望每次新开终端窗口或标签页时,自动运行某段脚本(比如显示欢迎信息、检查环境变量),可借助终端描述文件(Profile)的 Shell 启动设置:
- 打开“终端”→ 顶部菜单“终端 > 设置”→ 选中当前使用的描述文件(如“Pro”)→ 点“Shell”标签页
- 勾选“启动时运行命令”,并输入完整命令,例如:
/bin/zsh -c 'source ~/.zshrc; echo "✅ 终端已就绪"; /path/to/my-init.sh' - 取消勾选“在 shell 退出后关闭窗口”,避免脚本执行完终端立即关闭
- 该设置只影响新打开的终端窗口或标签页,不影响已有会话,且脚本在当前 shell 环境中执行,能正确读取你的 zshrc 配置
补充说明:为什么不用“右键菜单直接加脚本”?
macOS 的终端 App 本身不开放右键菜单的插件接口;所谓“终端内右键执行脚本”,实际依赖的是系统级的“服务”机制(即方式一),或需通过 AppleScript 封装(如用脚本编辑器生成.app再加登录项,但不适用于菜单触发)。强行修改终端二进制或注入代码不仅不稳定,还可能被系统安全策略拦截。
以上两种方法都无需安装 Keyboard Maestro 或其他付费工具,权限清晰、调试方便,且适配 macOS Sequoia 及后续版本。关键点在于:脚本路径要绝对准确、有执行权限(chmod +x)、涉及环境变量时显式 source 加载配置。











