这是 OS X 的一个错误还是我的配置有错误?
$ touch aaa
$ ls -l
total 0
-rw-r--r-- 1 jchen 1366545133 0 Feb 16 16:08 aaa
$ cp aaa AAA
cp: AAA and aaa are identical (not copied).
$ ln -s aaa AAA
ln: AAA: File exists
$ env | grep SHELL
SHELL=/bin/bash
cp
在 OS X 中,和似乎ln
不区分大小写。直到我尝试创建一个大写文件夹到小写名称的符号链接时,我才注意到这一点。
在 Linux 上我从未见过这样的问题。
答案1
问题在于 OS X 运行的 HFS+ 文件系统默认不区分大小写。
在下面磁盘工具您可以擦除并重新分区卷以使用区分大小写的 HFS+ 版本 - 它可以作为格式选择:
更改启动卷的大小写敏感度更加困难,通常需要格式化驱动器并从备份中恢复。
答案2
默认情况下,OS X 文件系统不区分大小写。
安装 Mac OS 时,您可以选择使用区分大小写的文件系统。但这会导致某些软件出现问题(例如 Adobe Creative Suite)。正如 Joe Block 在下面的评论中提到的,您最好在非启动卷或磁盘映像上创建区分大小写的文件系统。
您可以使用“磁盘工具”创建区分大小写的文件系统的磁盘映像,按照Apple 提供的指南。您还可以从命令行创建磁盘映像(例如,使用这个答案在 Ask Different 上),但一定要指定正确的文件系统。
要创建具有区分大小写的文件系统的 2GB 磁盘映像,您可以运行以下命令:
hdiutil create -size 2g -fs 'Case-sensitive Journaled HFS+' \
-type SPARSEBUNDLE ~/path/to/your/image