The macOS LC_COLLATE hunt: Or why does sort order differently on macOS and Linux
7 months ago
- #macOS
- #Linux
- #LC_COLLATE
- `sort(1)`命令在macOS和Linux上对软件包名称的排序方式不同,即使使用相同的区域设置(`LC_ALL=en_US.UTF-8`)
- macOS系统中,大多数区域的`LC_COLLATE`会符号链接到`la_LN.US-ASCII`,该配置采用简单的字节值比较,类似于POSIX区域设置(`C`)
- Linux(glibc)遵循ISO 14651排序规则,能实现更精细的排序(例如`python3-dev`会排在`python-dev`之前)
- macOS的排序规则源自2000年代初的FreeBSD 5系统,为保持向后兼容性至今未变
- 这种差异源于macOS极简主义的排序规则与Linux遵循国际标准(ISO 14651)之间的理念分歧