파일 경로 표현식
파일 경로 표현식(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}