Unix and Mac OS Paths

Unix and Mac OS Paths

Unix와 Mac OS의 경로에서 /는 경로의 요소들을 구분하고, 경로 요소로서의 .은 항상 바로 앞 경로가 가리키는 디렉토리를 뜻하며, 경로 요소로서의 ..은 항상 바로 앞 경로가 가리키는 디렉토리의 부모를 뜻해요. 경로 앞부분의 ~는 특별히 취급되지 않지만, expand-user-path를 써서 앞부분의 ~ 요소를 사용자별 디렉토리로 변환할 수 있어요. 경로 안에서 다른 문자나 바이트는 특별한 의미를 가지지 않아요. 인접한 여러 개의 /는 하나의 /와 동등해요 (즉, 단일 경로 구분자로 동작해요).

경로 루트는 항상 /예요. /로 시작하는 경로는 절대적이고 완전한 경로이며, 다른 문자로 시작하는 경로는 상대 경로예요.

/로 끝나는 모든 경로 이름은 구문상 디렉토리를 가리키며, 마지막 요소가 . 또는 ..인 경로도 마찬가지예요.

Unix와 Mac OS 경로는 인접한 여러 개의 /를 단일 /로 바꾸어 정화(cleanse)돼요.

(bytes->path-element bstr)의 경우, bstr는 어떤 /도 포함해서는 안 되며, 그렇지 않으면 exn:fail:contract 예외가 일어나요. (path-element->bytes path) 또는 (path-element->string path)의 결과는 항상 (path->bytes path)(path->string path)의 결과와 같아요. 하지만 다른 플랫폼에서는 그렇지 않으므로, 개별 경로 요소를 변환할 때는 path-element->bytespath-element->string을 사용해야 해요.

Mac OS에서 Finder 별칭(alias)은 길이가 0인 파일이에요.

출처: Racket Reference

본문

Unix Path Representation

Unix와 Mac OS의 경로는 본래 바이트 문자열이에요. 사용자에게 보여주기 위한 표현과 기타 문자열 기반 작업을 위해, 경로는 현재 로케일의 인코딩을 사용해 오류 자리에 ?(인코딩) 또는 #\uFFFD(디코딩)로 대체하며 문자열로/문자열로부터 변환돼요. 그 인코딩이 모든 가능한 경로를 서로 다른 문자열로 수용하지 못할 수도 있다는 점에 주의하세요.

더 알아보기