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


13

에서 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의 기능입니까?


1
옆으로 : POSIX 호환 쉘에서 소문자가 포함 된 변수 이름은 응용 프로그램 사용시 안전합니다 (변경시 쉘 또는 시스템 동작을 자동으로 수정하지 않음). 이것은 표준화 된 보증이 적용되지 않기 때문에 zsh가 표준을 따르기로 결정한 곳에서 스크립트 작성자에게 골치 거리가 될 수있는 장소 중 하나입니다.
찰스 더피

@CharlesDuffy 소문자와 대문자 변수에 대한 표준 부분에 대한 링크가 있습니까? 감사.
mosvy

@mosvy, pubs.opengroup.org/onlinepubs/9699919799/basedefs/…- 쉘 및 환경 변수는 단일 네임 스페이스를 공유한다는 점을 명심하십시오 (쉘 변수를 설정하면 기존의 비슷한 환경 변수의 값이 업데이트됩니다). 환경 변수를 설정하면 셸 변수가 초기화됩니다). 특정 라인 : 소문자를 포함하는 환경 변수 이름의 네임 스페이스는 애플리케이션 용으로 예약되어 있습니다. 응용 프로그램은 표준 유틸리티의 동작을 수정하지 않고이 네임 스페이스의 이름으로 환경 변수를 정의 할 수 있습니다.
찰스 더피

@CharlesDuffy 여기에는 해당되지 않습니다. path내부 설정 zshpathenvvar :을 업데이트하지 않습니다 path=junk zsh -c 'echo $path; path=garbage; /usr/bin/printenv path'.
mosvy

@ mosvy, 표준의 글자를 위반하지 않는다고 확신했습니다. 반면에, 이 정신for path in "$dir"/*재귀 적으로 작성하기에 안전한 코드를 만들 것 입니다.
찰스 더피

답변:


20

그것은 / 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).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.