9

PERL5LIB 환경 변수 끝에 경로를 추가하려고하지만이 변수가 항상 존재하는지 확신 할 수 없습니다. 그것이 존재하지 않으면 단순히 내가 추가하려고하는 값으로 초기화하고 싶습니다.csh에 아직 존재하지 않는 환경 변수에 추가하는 간단한 방법

if ($?PERL5LIB) then 
    setenv PERL5LIB ${PERL5LIB}:/some/other/path 
else 
    setenv PERL5LIB /some/other/path 
endif 

을이 작품 나는 기본적으로 두 번 같은 라인을 작성해야하기 때문에 여전히 꽤 투박한 것 같지만 : 여기

작동 예입니다. 내가 뭘하고 싶은건 더 효율적인 단일 라인 솔루션을 제안했다.

이것을 한 줄로 통합하는 방법이 있습니까? (또는 "/ 일부/기타/경로"를 여러 번 작성하는 관련이없는 몇 라인)


는 예를 들어이 떠들썩한 파티에서 할 수있는하십시오 부족

export PERL5LIB=${PERL5LIB:+${PERL5LIB}:}/some/other/path 
+0

P.S 내가 마지막으로 수정 한 내용을 볼 수있는 수정본을 볼 수 있습니다. –

+0

누락 된 물음표는 오타였습니다. 질문에있는 코드는 전혀 물음표없이 작동하지 않지만 내 대답을 쓸 때까지 내가 빠져 나온 것을 알지 못했습니다. – tjwrona1992

답변

0

더 나은 대답 내가 질문에 가지고있는 약간 개선 된 버전을 게시 할 것입니다. 다음은 최소한 경로를 두 번 쓰지 않아도됩니다.

아주 조금 개선되었지만, 적어도 뭔가입니다.

편집 :

기술적으로이 단축 될 수있다 :

set perl5lib = "/some/other/path" 
[ $?PERL5LIB ] && setenv PERL5LIB ${PERL5LIB}:${perl5lib} || setenv PERL5LIB ${perl5lib} 

가장 읽을 수없는,하지만 난 얻을거야로 그에 대한 좋은 것 같아요.

편집 2 :

아마도 가독성이 더 좋습니까? ... 나는 정말로 모른다.

set perl5lib = "/some/other/path" 
[ $?PERL5LIB ] \ 
    && setenv PERL5LIB ${PERL5LIB}:${perl5lib} \ 
    || setenv PERL5LIB ${perl5lib} 
+0

더 나은 답변이 없다면이 답변을 수락합니다 ... 더 나은 답변을 게시하면 언제든지 게시 해 주시면 허용 된 답변을 변경하겠습니다. – tjwrona1992

+0

당신은 중괄호를 사용하는 것이 불필요하다는 것과 복잡한 것을 추가한다는 것을 알고 있습니다.'{'= 인라인 확장을 시작하고'}'= 당신이 사용하지 말아야 할 표현을하지 않으므로 인라인 확장을 끝내고 성능을 낭비합니다 나는 당신이 컴퓨터의 복잡성과 크기의 차이를 알지 못한다고 생각합니다. –

+0

@MartinBarker 이것은 코드 복잡성과 성능보다는 코드 중복에 관한 것입니다. 나는 한 번 이상 "/ some/other/path"라고 쓰고 싶지는 않습니다. 왜냐하면 많은 환경 변수에 대해 한 오타가있을 확률이 높아지고 그것에 대해 알지 못하는 것이 훨씬 더 커지기 때문입니다. – tjwrona1992