隐约记得上一个大版本的 MacOS 还是支持用很简单的方式设置用户登录后就运行的程序的:设置
→ 用户
→ 登录项
。这个列表可以同时支持 App 和 Shell 脚本,后者对于开发者来说非常友好,想咋写咋写,并且可以设置隐藏窗口。可是到了最近的版本 Sonoma(应该是从 Ventura 开始的),这个设置项直接被移到了:通用
→ 登录项
。这就有点不可理解了,可能 Apple 觉得系统一般不会有第二个用户吧。我也不知道这个设置是不是会影响到所有人。当然,这不是我今天要讲的,今天我要讲如何在 MacOS Sonoma 上用简单的方式配置开机自动运行程序。
MacOS 自带一个为名“自动操作/Automation”的应用。 这是一个不被很多人知道的系统自带的实用工具,差不多有 20 年的历史了,所以我觉得其古老。 但是我觉得它不会再更新了,因为出现了一个名为“捷径/快捷方式”的应用。总之,以下是操作方式:
-
打开“自动操作”,新建一个名为“应用程序”的文稿类型:
-
在左侧输入“shell”,并将其拖至右侧(可以看到这个操作从 2012 年开始就没更新过了,古老!):
-
然后你就可以在 shell 脚本的编辑框内输入任何你想执行的脚本代码了。这个执行环境是没有被沙盒化的,可以访问几乎所有文件系统及命令。(一开始我还想自己写一个 App 来完成本文想要完成的操作,以好好利用一下 Developer 帐号。不妙,被沙盒给整放弃了。)你可以在这里直接写你的命令,如果比较简单的话,还是很方便的。比如:
- 打开一个应用:
open -a 'Apple Music'
。 - 给电脑喝咖啡:
caffeinate
。
但是我通常更倾向于这里写个一句话命令,执行我的脚本,然后在我的脚本里面写我想要的。毕竟编辑脚本比较方便,调试也更方便。以下是我的内容(该改的改,不要照搬):
1 2 3
#!/bin/bash cd /Users/tao/ && ./自动运行.sh
我会在我的脚本里面加上下面这样一句,它会在程序运行结束后展示一条通知📢,以便我确认:
osascript -e 'display notification "指定的程序已全部运行。" with title "自动运行.app"'
- 打开一个应用:
-
按
⌘
s
保存为 应用程序App,位置随意(能找到、不容易看到、不容易删除的地方最好)。 -
你可以双击看看是否能运行,通常来说不会有问题。
-
在 “设置” → “登录项” → “登录时打开” 里面添加这个刚创建的 App 即可。尝试一下注销或重启系统看看成功没有。
值得一提的是:这个脚本文件会被隐藏执行,不会显示窗口。但是如果脚本执行有错误,则会有提示窗口告诉哪一行有错误。