macOS позволяет создавать файлы, в названии которых «есть» слеши. Если создать папку в Finder и сохранить текстовый файл в TextEdit, со стороны это выглядит так, будто в именах используются разные разделители. Команда ls проясняет ситуацию: в одном случае в имени стоит двоеточие, в другом — слеш. Оба символа считаются корректными, и система сама переводит их туда-сюда в зависимости от контекста.
Всё дело в том, что у macOS два разделителя путей: / и :. Это наследие двух родительских систем: классической Mac OS и Unix-подобной NeXTSTEP. Когда Apple их объединяла, инженерам пришлось создать файловую систему, совместимую и с HFS+ (где разделитель — двоеточие), и с UFS (где разделитель — слеш).
В докладе на Usenix 2000 инженеры Apple описывают эту «шизофрению»: имена с двоеточиями выглядят для Carbon-приложений как содержащие слеши, а для BSD и Cocoa — как есть, с двоеточиями. Ярче всего это проявляется в AppleScript, который тянется ещё со времён System 7. Если спросить у него путь к себе через path to me, он вернёт строку с двоеточиями: Phoenix SSD:usr:bin:osascript. Чтобы получить нормальный Unix-путь, нужно явно запросить POSIX path.
В 2017 году Apple заменила HFS+ на APFS, но двойные разделители никуда не делись — скорее всего, ради обратной совместимости. Сломать весь софт, который завязан на старые пути, никто не рискнул. Автор признаётся: ему это «ломает мозг», потому что он вырос на Unix, где слеш — единственный разделитель, а обратный слеш Windows кажется странным. На самом деле файловые системы исторически использовали самые разные символы. Текущая Unix-гегемония заставляет нас удивляться тому, что в другой реальности показалось бы совершенно нормальным.