이 두 줄의 차이점은 무엇입니까?
export XDG_CONFIG_HOME="$HOME/.config"
export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xinitrc"
그리고 다음 두 줄은 다음과 같습니다.
export XDG_CONFIG_HOME="$HOME/.config"
export XINITRC="${XDG_CONFIG_HOME}/x11/xinitrc"
즉, $XDG_CONFIG_HOME
두 번째 예처럼 변수를 개별적으로 참조하는 것과 다음과 같이 사용하는 것의 차이점은 무엇입니까 ${XDG_CONFIG_HOME:-$HOME/.config}
? 변수 ${XDG_CONFIG_HOME}
에서 변수를 참조하기 전에 이미 변수 값을 설정했기 때문에 경로를 반복하는 것은 중복된 것처럼 보입니다 XINITRC
.
답변1
바라보다info zsh 'Parameter Expansion'
:
${NAME-WORD}
${NAME:-WORD}
NAME이 설정되었거나 두 번째 형식에서 비어 있지 않으면 해당 값이 대체되고, 그렇지 않으면 WORD로 대체됩니다. 두 번째 형식에서는 NAME을 생략할 수 있으며, 이 경우 항상 WORD가 대신 사용됩니다.
이는 Bourne 쉘(70년대 후반부터)에서 상속된 기능이며 모든 유사한 Bourne 또는 POSIX 쉘에 존재합니다(생략에 대한 마지막 부분 제외).이름이는 zsh
특정 확장자입니다.)
null이 아닌 경우 변수 값으로 확장되고, 그렇지 않으면 ${XDG_CONFIG_HOME:-$HOME/.config}
변수 값으로 확장됩니다.XDG_CONFIG_HOME
$HOME/.config
위에서 비어 있지 않은 것으로 보장된 것으로 정의된 점을 고려하면 XDG_CONFIG_HOME
정말 중복됩니다.