ZSH 환경 변수

ZSH 환경 변수

이 두 줄의 차이점은 무엇입니까?

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정말 중복됩니다.

관련 정보