从El Capitan (OS X 10.11)引入System Integrity Protection (SIP)开始,mac就已经开始逐步加强对系统文件的写限制,到Catalina(macOS 10.15)时完全限制了在根目录下进行写操作。从Catalina开始,官方提供了synthetic.conf文件以支持在根目录下创建软链。
可以通过man synthetic.conf查看文档。
操作步骤:
- sudo vi /etc/synthetic.conf
进行文件映射 or 软连接,如:
data Users/username/log
data1 Users/username/log1
注意:
1) 每行的两项配置不是以/开头。(可以理解系统会帮我们加入前缀/)
2) data 与 Users/username/log 之间是使用tab进行分隔,否则重启后无效。如果指定目录不存在记得mkdir目录。
- 重启Mac,然后ls -l 就会发现/data, /data1就会存在了。
如果发现/data目录没有被创建,那么检查下你的/etc/synthetic.conf文件里的Tab分隔符是否被正确配置了。有的机器的vim配置了set expandtab,导致Tab被自动转换成了多个空格。这个时候可以在编辑模式下,先按ctrl+v再按tab键,就可以输入Tab了。可以用xxd查看,Tab是ASCII码是09,而空格的是20。
xxd /etc/synthetic.conf
空格的情况(错误的情况)
00000000: 6461 7461 2020 2020 5573 6572 732f … data Users/…
Tab的情况(正确的情况)
00000000: 6461 7461 0955 7365 7273 2f… data.Users/…
References:
https://developer.apple.com/forums/thread/670391