[SHELL] 내가 쓰는 환경 변수 설정 방법

이래저래 서버 쪽으로 계속해서 일을 하다보니, 쉘 환경이 바뀌는 경우가 잦아졌다.

어떤 개발에서는 이 환경 변수를 써야 하고 어떤 개발에서 다른 환경을 써야하기도 하는 상황에서 환경 변수 관리라는 것이 참으로 짜증나게 되었다.

사실 별건 아니다. 필요하면 수정하면 되고.. 하지만 귀찮은 일을 또 그냥 둘 수는 없어서 이래저래 지금껏 써보던 방법을 정리해보고자 한다.

 

사실 야근하는 중인데 놀고 싶어서 이러는거다.

 

환경 변수 관리는 어떻게?

 

사실 초반에 제일 고민 했던 것으로 환경 변수를 하나로 몰아쓰자니 나중에는 내가 무슨 목적으로 이걸 추가했는지 도저히 알 방법이 없었다. 처음 몇개야 이건 뭐거 저건 뭐고 하면서 기억하지 나중에 자꾸 추가 하다보면… 나중에는 이게 원래 있던건지 내가 추가한 건지 도저히 기억이 나질 않게 된다. 그래서 아래와 같은 방법을 사용하기 시작했다.

 

환경 변수는 디렉토리에, 그리고 로드는 rc 파일에서

 

먼저 나는 내가 생성한 모든 계정아래에 EnvSet이라는 디렉토리를 만들었다. 사실 무슨 이름이든 상관없다. 그냥 쓰기 편한 이름으로 만들면 된다. 그 다음에 rc 파일에 아래와 같은 코드를 추가하였다.

 

for file in `ls ~/EnvSet/*.env` 
do
    source ~/EnvSet/${file}
done

 

해당 쉘 스크립트 부분이 하는 일은 단순하다. 파일 리스트를 읽어서 환경 변수 설정 파일을 반영해주는 것이 전부다.

위와 같이 환경을 만들었다면 다음은 실제 환경변수 파일, 여기서는 env 파일들을 생성할 차례이다. 예제는 tensorflow를 동작시키기 위한 환경 변수를 세팅하는 예제이다.

 

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
source /DATA/tensorenv/bin/activate

 

이렇게 환경 변수 파일을 채워 해당 내용을 tesorflow.env 로 저장하면 끝!

 

이런식으로 여러개의 파일을 나누어서 환경변수를 관리할 수 있다. 하지만 사람은 게으르다. 개발자는 더 게을러야 한다고 배웠다.

 

환경 변수를 필요할 때만 불러오고 싶다.

 

위의 요구 사항을 반영하자. 쉘 스크립트로 구현하면 쉽다. 이전의 tensorflow 환경 변수를 필요할 때만 불러오고 싶다면

 

echo -n "Do you want run tensorflow env? ( y/N ):"

read input

if [ "${input}" = "y" ]
then
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
     source /DATA/tensorenv/bin/activate
fi

 

위와 같이 구현했다. 위의 내용은 단순하다. y를 입력하면 tensorflow 환경 변수를 읽어오고 아무 문자 혹은 그냥 엔터만 치면 읽어오지 않는다.

이런식으로 필요한 환경 변수 세팅을 변경할 수 있게 관리하면 조금 더 깔끔한 환경을 구현할 수 있다.

댓글 남기기

이메일은 공개되지 않습니다.