zsh에서 $ path와 $ PATH (소문자와 대문자)의 차이점은 무엇입니까? sbin : / bin :

에서 FreeBSD의 (12), 사용 zsh쉘을, 내가보고이 차이 눈치 $path대 (소) $PATH(대문자).

echo $path

/ sbin / bin / usr / sbin / usr / bin / usr / local / sbin / usr / local / bin / usr / home / freebsd / bin

echo $PATH

/ sbin : / bin : / usr / sbin : / usr / bin : / usr / local / sbin : / usr / local / bin : / usr / home / freebsd / bin

하나의 출력은 SPACE 문자로 구분되고 다른 하나는 COLON 문자로 구분됩니다.

왜 차이점이 있습니까?

이 두 개의 서로 다른 개별 변수입니까? 아니면 소문자 / 대문자가 내가 모르는 트릭이나 의미를 유발합니까?

이것이 zsh기능입니까? 아니면 FreeBSD의 기능입니까?



답변

그것은 / zsh에서 상속받은 기능입니다 .cshtcsh

$path 배열 변수되어 묶여 받는 $PATH 스칼라 (문자열) 변수. 하나의 수정 사항은 다른 하나에 반영됩니다.

에서 zsh(반대 (t)csh), 당신이 옆에 다른 변수를 묶을 수 $PATHtypeset -T. 콜론으로 분리 된 스칼라에 대문자 이름을 사용하고 배열에 대해서는 소문자에 동일한 이름을 사용하는 것이 일반적이지만 필수는 아닙니다. 콜론은 기본 구분 기호이지만 다른 구분 기호를 사용할 수 있습니다 (예 : 줄 바꿈을 사용하여 여러 줄 문자열을 배열에 연결하거나 쉼표를 사용하여 csv 행을 배열에 연결)

의 최신 버전 zsh에서는 typeset -p PATH또는 typeset -p path두 변수 사이의 링크를 보여줍니다.

% typeset -p path
typeset -aT PATH path=( /home/chazelas/bin /usr/local/bin /usr/bin /bin )

제거 구성 요소를 쉽게 추가하거나 구성 요소를 반복하는 데 유용합니다.

를 수행하면 typeset -U path요소가 만드는 독특한 또한 유지하는 데 도움이 $PATH변수 클린 (달성 될 수있는 비슷한 tcsh과를 set -f).