zsh에 디렉토리가 아직 존재하지 않는 경우에만 내 PATH에 디렉토리를 추가하는 방법이 있습니까?

zsh에 디렉토리가 아직 존재하지 않는 경우에만 내 PATH에 디렉토리를 추가하는 방법이 있습니까?

zsh에서 내 PATH에 디렉토리를 추가하는 쉬운 방법이 있습니까(디렉토리가 아직 존재하지 않는 경우에만)? (또는 보다 일반적으로 모든 환경 변수). 나는 시도했다:

PATH+=/my/directory

...하지만 두 번 실행하면 두 번 추가됩니다.

답변1

In은 zsh $PATH배열과 연관되어 있습니다( 참조 typeset -T) $path. 배열이 다음을 갖도록 강제할 수 있습니다.고유한값은 다음과 같습니다.

typeset -U path PATH

( U여기에도 nique 속성이 추가되어 $PATH대신에 할당할 때 중복 제거도 발생합니다)$PATH$path

그런 다음 경로를 추가합니다.

path+=(~/foo)

이미 존재하더라도 걱정하지 마십시오.

맨 앞에 추가하려면 다음을 수행합니다.

path=(~/foo "$path[@]")

또는:

path[1,0]=~/foo

~/foo이미 들어 있는 경우 $path앞쪽으로 이동됩니다.

답변2

export -U PATH=~/foo${PATH:+:$PATH}시작 파일 중 하나에 추가하세요 . 배열이나 PATH 와 같은 구분된 변수 -U에서 처음 나타나는 값만 유지합니다.:

답변3

다음과 같은 작업을 수행해야 합니다.

if echo $PATH | grep :newpath: ; then doIfPresent; else doIfMissing; fi

두 개의 ":"으로 구분된 경우에만 유효하며 newpath, 시작 또는 끝에 있는 경우에도 유사하게 고려해야 합니다.

잘.

관련 정보