다디와 괴발개발

환경변수 사용법 본문

DevOps/Linux

환경변수 사용법

아임다디 2022. 3. 30. 15:55

프로젝트를 진행하다보면 환경변수와 .env 파일을 많이 맞이하게 될 것이다. 이 환경변수는 무엇을 말하는 것일까?

환경변수란?

하나의 변수 이름을 환경에 따라 다르게 설정가능한 것

API Key, DB Password등, 민감한 정보를 저장 및 관리하고, 서로 다른 PC 또는 여러 .env 파일에서 같은 변수 이름에 다른 값을 할당 하기 위해 사용되는 변수.

보통 개인용과 기업용 API 키가 다른데, 환경변수를 이용하여 환경을 구분해 코드 작성이 가능하다.

이번 포스팅에서는 쉘에서 환경변수를 확인하고 임시 적용할 수 있는 export와, 자바스크립트에서 환경변수를 사용할 수 있는 dotenv와 Node.js에서 환경변수를 영구적용할 때 사용하는 .env파일에 대해 알아보도록 하자.

export : 환경변수 확인하기 & 환경변수 임시 적용

쉘에서 export 명령을 치면 현재 쉘에 적용되어 있는 환경변수들이 출력이 된다.

export 명령을 통해서 환경변수를 설정할 수 있는데, 이 때 적용되는 환경변수는 쉘이 종료되면(로그아웃 하면) 사라지게 되는 임시 환경변수이다.

export # 현재 시스템에 적용되어있는 전체 환경변수 출력
export urclass="is good" # 새로운 환경변수 설정, 이 때 반드시 등호 표시 앞뒤로 공백이 없어야 함 
echo $환경변수이름 # 환경변수 값을 확인 가능

쉘에서 환경변수 영구적으로 적용하기

영구적으로 저장하여 편리하게 사용하고 싶을 때는 어떻게 하면 될까? .bashrc에 환경변수를 추가해준 뒤 source 명령어를 입력하여 적용할 수 있다.

nano ~/.bashrc # 파일을 열어준다
export urclass="is good" # 파일 맨 하단에 작성 후 저장
source ~/.bashrc # 저장한 내용을 적용해준다
echo $urclass # 쉘을 종료했다 다시 실행시킨 후 환경 변수가 출력되는지 확인

dotenv : 자바스크립트에서 환경변수 사용

dotenv는 환경 변수를 파일에 저장할 수 있도록 해주는 npm 라이브러리이다.

dotenv 사용 방법

  1. npm 설치
    brew install npm # Homebrew를 이용해 npm 설치 
    npm init -y # 질문 스킵 하면서 init 가능, 그냥 Init하면 엔터 계속 눌러줘야 함
  2. dotenv 라이브러리 설치
    npm i dotenv
  3. dotenv를 통해 process.env로 Node.js 환경에서의 환경변수 객체들을 조회할 수 있다.
    console.log(process.env) //모든 Js 환경의 환경변수 출력 
    console.log(process.env.USER) // 환경변수 중 USER 출력

.env : Node.js에서 환경변수 영구 적용

export로 적용한 환경 변수는 현재 사용 중인 터미널에서만 임시로 사용 가능하고, 영구 적용을 하려면 .bashrc 파일을 활용하여 적용해줘야 한다.
Node.js에서는 파일 .env를 만들고 저장하여 환경 변수를 영구 적용할 수 있다.

.env 파일을 생성한 뒤, 사용하고자 하는 환경변수를 입력한 후 저장해준다. export에서 사용할때와 마찬가지로 = 사이에는 공백이 없어야 한다.

# .env
myname=seongahpark
// index.js 
const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.myname); # 환경변수 중 myname만 출력

주의 사항 : .env파일은 꼭 .gitignore에 등록한 뒤 깃허브에 내용을 올려야 한다

아주아주 중요한 내용!

환경변수에는 민감한 내용이 많이 들어가기 때문에(토큰, API key, 각종 아이디와 패스워드) 깃허브에 올리는 순간 모든이들에게 공개되어버리는 대참사가 발생한다. 꼭 gitignore 파일에 .env가 있는지 확인한 후에 깃에 푸시하자.

# dotenv environment variables file
.env