체인의정석

운영체제, 터미널의 구조와 그에 따른 환경 변수의 설정 (direnv 사용) 본문

개발/docker & linux

운영체제, 터미널의 구조와 그에 따른 환경 변수의 설정 (direnv 사용)

체인의정석 2021. 8. 18. 19:02
728x90
반응형

먼저 OS를 기준으로 보았을 때 

맥 OS자체는 리눅스에서 포크된 하나의 복사된 운영체제로 볼 수 있다. 

따라서 기본적으로 리눅스의 기본 설정값을 따르고 있으며 이후, 환경 변수를 설정해주면 맥 OS 단계에서 환경변수가 설정되게 된다.

 

같은 원리로 만약 터미널을 키고 바로 환경 변수를 설정해주면 그 이후의 다른 값들은 해당 환경 변수를 따르게 되고, 환경변수가 많아질 경우 예기치 못한 에러가 나고 뒤죽박죽이 될 수 있다.

 

여기에 따라 나오는 것이 바로 direnv라고 할 수 있다.

https://www.44bits.io/ko/post/direnv_for_managing_directory_environment#direnv%EC%9D%98-%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8-%EC%82%AC%EC%9A%A9%EB%B2%95

 

direnv를 사용한 디렉토리(프로젝트) 별 개발환경 구축: 루비, 파이썬, 노드 개발 환경 구축

direnv는 디렉터리 별로 셸 환경을 구축할 수 있게 해주는 도구입니다. 디렉터리 별 환경 변수 설정 법, 루비(Ruby), 파이썬(Python), 노드(Node) 등 프로그래밍 언어 프로젝트를 셋업하는 법을 소개합니

www.44bits.io

direnv를 사용하여 환경변수를 관리하면 해당 툴이 터미널에 들어갈때 파일로 만들어둔 설정값을 export하여 정해주고 경로에서 나갈때는 설정값을 다시 초기화 시켜둔다. 따라서 반복적으로 환경 변수를 특정 경로에서만 실행할 때는 유용한 툴인것 같다.

 

이렇게 환경 변수가 위치마다 다를 수 있는 이유는 터미널을 하나 띄우는것이 포크에 해당하기 때문이다. 원래 있던 운영체제의 세팅과 같은 설정값으로 포크를 하기 때문에 그냥 설정한 변수는 포크되는 다른 터미널에도 영향을 주지만 포크 이후에 direnv가 환경설정값을 넣어주기 때문에 환경설정변수가 꼬이지 않고 독립적으로 작동될 수 있는 것이다.

 

먼저 아래와 같은 내용으로 파일을 만들어 준다.

 

파일이름 : .envrc

export 환경변수1 = 값1
export 환경변수2 = 값2

 

해당 파일이 있는 위치에서 아래 명령어를 해주어야 파일이 입력이 되게 된다.

.envrc 파일이 수정될 때도 아래의 명령어를 실행해야 변경 사항이 반영이 되게 된다.

direnv allow

 

노드를 실행하면 해당 환경 변수가 들어오게 된다.

npm run start

 

728x90
반응형
Comments