즉시 사용하고 나중에 사용하기 위해 환경 변수를 .bashrc에 자주 삽입한 다음 소스를 사용하여 .bashrc
환경 변수를 업데이트하는 긴 설치 스크립트가 있습니다. 그러나 이는 예상대로 작동하지 않았습니다. 터미널에서 독립적으로 실행할 때와 달리 이러한 명령을 스크립트로 함께 실행하면 현재 환경이 업데이트되지 않습니다.
다음은 작은 예입니다.
echo export TEST_BASH=sup >> ~/.bashrc
source ~/.bashrc
echo $TEST_BASH
마지막 줄은 예상대로 "sup" 대신 공백으로 인쇄됩니다. 왜 그런 겁니까?
답변1
파일 ~/.bashrc
이 대화형 또는 비대화형 셸에서 획득되었는지 테스트됩니다.
case $- in
*i*) ;;
*) return ;;
esac
이 파일이 스크립트(비대화형 셸)에서 시작되면 return
분기가 이루어지고 파일이 끝까지 실행되지 않습니다.
export
파일 끝에 명령문을 추가한다는 것은 스크립트에서 시작될 때 명령문이 실행되지 않음을 의미합니다.
해결책은 export
명령문을 별도의 파일에 작성하고 해당 파일을 스크립트( ~/.bashrc
또는 필요하다고 생각하는 경우 스크립트)에서 가져오는 것입니다.