스크립트에서 .bashrc를 가져오면 환경 변수가 업데이트되지 않습니다.

스크립트에서 .bashrc를 가져오면 환경 변수가 업데이트되지 않습니다.

즉시 사용하고 나중에 사용하기 위해 환경 변수를 .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또는 필요하다고 생각하는 경우 스크립트)에서 가져오는 것입니다.

관련 정보