其实原理很简单,使用Launchd创建一个开机启动的服务,然后这个服务关联/etc/rc.local文件,那么接下来操作rc.local就和Linux下一样的了。

当然,这种思路还可以直接使用在~/.bashrc文件上,但是这种方式有个弊端,就是权限不是root,所以适用范围小很多。而通过这个服务创建的文件,在里面执行脚本的用户是root,权限是最高的。

说明:关于launchd的用户直接上苹果开发者网站查询,线索可以是这个launchctl

实现步骤:

进入​​/Library/LaunchDaemons​​目录



cd /Library/LaunchDaemons


创建一个plist文件



sudo vim local.localhost.startup.plist


复制以下内容到文件保存。(按【Esc】,然后输入【:wq!】,回车)



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.localhost.startup</string>
<key>Disabled</key>
<false/>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>LaunchOnlyOnce</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/etc/rc.local</string>
</array>
</dict>
</plist>


使用launchctl添加为服务



sudo launchctl load -w ./local.localhost.startup.plist


最后创建rc.local文件,



sudo vim /etc/rc.local


在里面写好需要开机执行的命令。记得赋予​​rc.local​​​文件​​x​​权限(可执行)



sudo chmod +x /etc/rc.local