tcsh의 여러 줄 PATH

tcsh의 여러 줄 PATH

허용된 답변에서 영감을 얻었습니다.이 스레드, tcsh(버전 6.14.00)에서 유사한 구조를 복사하려고 시도했지만 성공하지 못했습니다.

setenv new_PATH (
/some/path
/some/other/path

# Some comments
/foo/path

# Another group
/bar/path

$PATH) # Attach $PATH at the end in case we had previous declarations

setenv PATH `sed -e '/^#/'d -e '/^$/'d << EOF | paste -d ":" -s $new_PATH`

" " 오류가 발생합니다 Too many ('s. 내가 뭘 잘못했나요?

답변1

다음을 수행할 수 있습니다.

set path = (        \
    /this/dir       \
                    \
# This is a comment \
                    \
    /that/dir       \
    /another/dir    \
)

또 다른 방법은 파일에서 디렉터리 이름을 읽는 것입니다.

set path = ()
foreach dir (`/bin/cat path.txt`)
    set path = ( $path $dir )
end

/bin/cat방금 내 를 깨뜨렸기 때문에 지정해야 합니다 $PATH.

cat주석을 필터링하는 것(예: 간단한 명령 sed또는 /bin/sed명령) 으로 바꿀 수 있습니다 .

이로 인해 공백이나 기타 흥미로운 문자가 포함된 디렉터리 경로에 문제가 발생할 수 있지만 어쨌든 이러한 문제를 피하도록 노력해야 합니다.

답변2

setenv환경 변수를 설정하면 배열이 될 수 없습니다. setenv일반 명령의 구문을 갖습니다.

set명령은 쉘 변수를 배열로 설정합니다. 모든 요소를 ​​같은 줄에 배치해야 합니다.

set new_PATH = ( /some/path /some/other/path … )

Tcsh는 path쉘 변수를 PATH환경 변수와 동기화하므로 이 작업을 수동으로 수행할 필요가 없습니다.

set new_PATH = ( /some/path /some/other/path … )
set new_PATH = ( $new_PATH /more )
set path = $new_PATH

아니면 직접

set path = ( /some/path /some/other/path … )

답변3

tcsh는 PATH 환경 변수를 다음과 같이 정의합니다. setenv PATH /path

다음과 같이 변수에 추가합니다. set PATH ($PATH /add/path/here /another/here)

환경 변수를 자신에게 전달하는 경우 현재 설정된 위치에 추가하기만 하면 됩니다.

환경 변수를 설정하는 것이 얼마나 쉬운지 판단해 보세요. 스크립트된 이유가 없습니다. 그것은하나변수를 설정하는 명령입니다.

OP 참고: 설정해야 하는 변수를 설정하는 마지막 줄입니다 set PATH ($PATH <then issue sed>.

관련 정보