在Mac中的根目录下创建文件(比如创建/data目录)

从El Capitan (OS X 10.11)引入System Integrity Protection (SIP)开始,mac就已经开始逐步加强对系统文件的写限制,到Catalina(macOS 10.15)时完全限制了在根目录下进行写操作。从Catalina开始,官方提供了synthetic.conf文件以支持在根目录下创建软链。

可以通过man synthetic.conf查看文档。

操作步骤:

  1. sudo vi /etc/synthetic.conf

进行文件映射 or 软连接,如:

data Users/username/log
data1 Users/username/log1

注意:
1)  每行的两项配置不是以/开头。(可以理解系统会帮我们加入前缀/)
2)  data 与 Users/username/log 之间是使用tab进行分隔,否则重启后无效。如果指定目录不存在记得mkdir目录。

  1. 重启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://javabase.cn/p/114

https://developer.apple.com/forums/thread/670391