콘텐츠로 이동

파일 경로 표현식

파일 경로 표현식(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에서도 역슬래시 대신 슬래시를 쓰는 스타일을 권합니다.)

환경 변수 치환

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

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

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

기본값이 있는 환경 변수 치환

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

${XDG_CONFIG_HOME:-$HOME/.config}

조건식

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

${FOO:+$BAR\baz}