콘텐츠로 이동

파일 경로 표현식

파일 경로 표현식(file path expression)은 파일 경로를 선언 변수와 상속받은 환경 변수(environment variable)를 이용해서 구성할 수 있게 해주는 작은 문법입니다. 이 문법은 Bash의 파라미터 풀이(parameter expansion) 문법과 닮아 있어서, 이에 익숙하면 따로 배우지 않아도 바로 쓸 수 있습니다. 다음은 여러가지 파일 경로 표현식들의 예입니다. 한 줄 당 하나의 표현식입니다.

/etc/foo
C:\Windows\system32
$UserProfile
$HOME/.config
${XDG_CONFIG_HOME:-$HOME/.config}

파일 경로

파일 경로 표현식의 모든 부분이 변수일 필요는 없습니다. 변수와 일반적인 파일 경로가 섞일 수 있으며, 아예 변수가 전혀 개입되지 않아도 됩니다. MS-DOS/Windows 스타일의 파일 경로와 POSIX 스타일의 파일 경로 모두 지원합니다. (다만, Windows에서도 역슬래시 대신 슬래시를 쓰는 스타일을 권합니다.)

변수 조회

Dojang은 먼저 참조한 이름과 일치하면서 선택된 선언 변수를 찾습니다. 선언 변수의 어느 분기도 일치하지 않으면 상속받은 프로세스 환경에서 찾습니다. 선언 변수 값도 파일 경로 표현식이므로 참조를 중첩할 수 있고 선언 순서는 중요하지 않습니다. 선택된 빈 값은 정의된 값으로 취급해 상속받은 값을 가립니다. 선택된 값 사이의 순환 참조는 오류입니다.

이 조회 규칙은 파일 및 디렉터리 경로 규칙과 훅의 working-directory를 포함해 Dojang이 파일 경로 표현식을 사용하는 모든 곳에 적용됩니다.

변수 치환

파일 경로 사이에 변수가 포함될 수 있습니다. 혹은 아예 변수 하나로만 파일 경로 표현식이 성립될 수도 있습니다. 변수 치환은 두 가지 문법이 있습니다.

  • $ENV_VAR: 환경 변수의 경계가 명확하다면 대부분의 경우 이 문법을 쓸 수 있습니다.
  • ${ENV_VAR}: 가끔 환경 변수의 경계가 불명확한 경우가 있는데, 그럴 때 이 문법을 씁니다.

Windows에서도 %ENV_VAR% 또는 $env:ENV_VAR 문법을 쓰지 않고 POSIX 셸 스타일의 위 문법을 쓴다는 점을 유의해 주세요.

달러 기호를 글자 그대로 쓰려면 $$로 적습니다. 예를 들어 $$HOME$HOME이라는 글자 그대로 펼쳐지지만, $HOMEHOME이라는 변수를 조회합니다.

기본값이 있는 변수 치환

변수가 정의되어 있지 않거나 비어 있는 경우 주어진 기본값 식을 대신 사용하도록 할 수 있습니다. 기본값 식을 :- 뒷부분에 이어서 쓰면 됩니다. 기본값 식은 다른 환경 변수 치환 등을 포함할 수 있습니다. 예를 들어 아래 파일 경로 표현식은 XDG_CONFIG_HOME 환경 변수가 있다면 그 값을 쓰지만, 그렇지 않을 경우 $HOME/.config를 쓰는 예시입니다.

${XDG_CONFIG_HOME:-$HOME/.config}

조건식

변수가 정의되어 있고 비어 있지 않을 때만 주어진 식이 쓰이도록 할 수 있습니다. 조건부로 쓰일 식은 :+ 뒷부분에 이어서 쓰면 되며, 마찬가지로 해당 식은 다른 환경 변수 치환 등을 포함할 수 있습니다. 예를 들어 아래 파일 경로 표현식은 FOO가 정의되어 있고 비어 있지 않을 때만 $BAR\baz 식의 결과 값을 취합니다.

${FOO:+$BAR\baz}