쉘 스크립트 안에서 만든 variable 이 쉘 스크립트가 종료된 후에도 남아있게 하려면 어떻게 하죠?

yaru22의 이미지

쉘 스크립트 (예를 들어 tcsh) 안에서

setenv JAVA_HOME /usr/local/java

이렇게 해놓고 실행하면

쉘 스크립트가 실행하는 동안에만 유효하고

스크립트 실행이 끝나면 JAVA_HOME 은 undefined 상태잖아요

그런데 만약에 스크립트 실행이 끝나고 나서도 유효하게 하려면 어떤 명령어를 쓰면 되죠?

익명사용자의 이미지

쉘 스크립트를 실행하는 방법의 문제인것 같습니다.
쉘 스크립트를 실행하는 방법은 다음과 같은 방법이 있습니다.

# . a.sh
# source a.sh

# sh a.sh
# chmod 755 a.sh; ./a.sh

위에 언급한 첫번째 방법을 사용하면 변수가 유지됩니다.
하지만 아래의 방법은 변수가 유지되지 않습니다.(bash기준으로 설명드렸습니다.)
feanor의 이미지

. script.sh

처럼 현재 쉘 환경에서 실행하도록 하면 됩니다. "source"도 "."와 같은 일을 합니다만 bash 확장이고 표준은 아닙니다.