허용된 답변에서 영감을 얻었습니다.이 스레드, 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>
.