`export` 명령으로 맥 터미널에서 API 키를 환경변수로 설정했는데, 터미널 창을 닫고 다시 열면 설정했던 값이 말끔히 사라져 매번 재설정하는 번거로움을 겪고 계신가요?
이런 현상은 `export` 명령이 현재 셸 세션에만 영향을 미치며, 셸이 종료되면 함께 소멸되기 때문에 발생합니다.
이 글에서는 맥OS에서 API 키를 터미널을 다시 열어도 사라지지 않도록 환경변수에 안전하게 영구 적용하는 명확한 방법을 단계별로 설명하고, 더불어 중요한 보안 고려사항까지 다룹니다.
– `export` 명령은 현재 셸 세션에만 환경변수를 설정하므로, 터미널을 닫으면 사라집니다.
– `~/.zshrc` 또는 `~/.bash_profile` 같은 셸 설정 파일을 수정하여 환경변수를 영구적으로 적용할 수 있습니다.
– API 키와 같은 민감한 정보는 소스 코드에 직접 노출하지 않고, 항상 환경변수로 관리하는 것이 보안상 필수적입니다.
맥OS에서 터미널을 닫아도 API 키 환경변수가 사라지지 않게 하려면 ~/.zshrc 또는 ~/.bash_profile 파일에 영구적으로 등록해야 합니다.
`export` 명령으로 환경변수가 사라지는 이유
개발 환경에서 API 키나 민감한 설정을 다룰 때, 많은 분들이 터미널에서 `export MY_API_KEY=”YOUR_KEY”`와 같은 명령을 사용해 환경변수를 설정합니다. 하지만 이 방법은 터미널 창을 닫는 순간, 설정했던 값들이 마치 처음부터 없었던 것처럼 사라지는 결과를 초래합니다.
이러한 현상이 발생하는 본질적인 이유는 `export` 명령이 현재 실행 중인 셸 프로세스와 그 하위 프로세스에만 환경변수를 적용하기 때문입니다. 마치 식당에서 주문한 음식이 현재 테이블에만 제공되는 것과 같습니다. 터미널 창을 닫는다는 것은 해당 셸 프로세스를 종료하는 것이며, 이때 그 프로세스에 종속되어 있던 모든 환경변수 정보도 함께 소멸됩니다.
따라서 환경변수를 영구적으로 사용하려면, 셸이 시작될 때마다 자동으로 해당 변수를 설정하도록 만드는 별도의 메커니즘이 필요합니다. 이것이 바로 셸 설정 파일을 사용하는 핵심적인 이유입니다.
`export` 명령은 현재 세션에서 특정 스크립트나 프로그램 실행에 필요한 임시 환경변수를 설정할 때 매우 유용합니다. 하지만 시스템 전반에 걸쳐 영구적으로 필요한 환경변수에는 적합하지 않습니다.
Photo by Harry Tucker on Pexels
셸 설정 파일 이해하기: `.zshrc`와 `.bash_profile`
맥OS는 사용자에게 셸(Shell) 환경을 제공하며, 이 셸이 시작될 때마다 특정 스크립트를 실행하여 환경을 초기화하고 사용자 설정을 로드합니다. 이때 사용되는 파일들이 바로 `.zshrc`, `.bash_profile`, 그리고 `.bashrc`와 같은 셸 설정 파일들입니다.
최근 맥OS 버전(Catalina 이후)에서는 기본 셸로 Zsh(Z shell)이 사용되며, 이 경우 `~/.zshrc` 파일이 주로 환경변수 설정에 활용됩니다. 반면, 이전 맥OS 버전이나 Bash(Bourne-again shell)를 명시적으로 사용하는 사용자라면 `~/.bash_profile` 또는 `~/.bashrc` 파일을 사용해야 합니다. 이 파일들은 새 터미널 창이 열리거나 새로운 셸 세션이 시작될 때 단 한 번 실행되어 환경변수, 경로, 셸 함수 등을 설정합니다.
이 파일을 통해 `export` 명령어를 미리 작성해두면, 터미널을 다시 열더라도 셸이 시작될 때마다 해당 명령이 자동으로 실행되어 API 키가 항상 환경변수에 설정된 상태를 유지하게 됩니다. 이 과정을 통해 여러분이 겪었던 ‘터미널 닫으면 사라지는 문제’를 근본적으로 해결할 수 있습니다.
| 구분 | .zshrc | .bash_profile 및 .bashrc |
|---|---|---|
| 기본 셸 | macOS Catalina (10.15) 이후 Zsh 사용 시 | 이전 macOS 버전 또는 Bash 사용 시 |
| 실행 시점 | 새로운 대화형 셸이 시작될 때마다 | 로그인 셸(.bash_profile), 대화형 셸(.bashrc) |
| 환경변수 설정 | 주로 이 파일에 `export` 구문 추가 | .bash_profile에 추가 (없는 경우 .bashrc 사용) |
Photo by Adrien Olichon on Pexels
API 키 환경변수 영구 설정 5단계
이제 맥OS에서 API 키를 환경변수에 영구적으로 설정하는 구체적인 5가지 단계를 안내해 드립니다. 이 과정은 Zsh를 기본 셸로 사용하는 최신 맥OS 환경을 기준으로 설명하며, Bash 사용자도 파일명만 변경하여 동일하게 적용할 수 있습니다.
API 키와 같은 민감 정보는 코드 내에 직접 입력하는 대신, 반드시 환경변수로 관리해야 합니다. 이는 보안상 매우 중요한 원칙이며, 협업 시 실수로 API 키가 소스 코드 저장소에 올라가는 것을 방지하는 효과도 있습니다. 다음 단계를 차근차근 따라 해보세요.
- 셸 설정 파일 열기 — 먼저 터미널을 열고 다음 명령어를 입력하여 사용 중인 셸의 설정 파일을 텍스트 편집기로 엽니다. 대부분의 경우 `~/.zshrc` 파일을 사용하지만, Bash 사용자라면 `~/.bash_profile` 또는 `~/.bashrc`를 열어야 합니다.
`open -e ~/.zshrc` (TextEdit으로 열기)
`vim ~/.zshrc` (Vim으로 열기, 익숙하다면)
`nano ~/.zshrc` (Nano로 열기, 간단한 편집에 용이) - API 키 추가 — 열린 파일의 맨 마지막 줄에 다음 형식으로 API 키 환경변수를 추가합니다. `MY_API_KEY`는 여러분이 사용할 환경변수 이름이며, `your_secret_key_here` 부분에는 실제 API 키 값을 입력합니다. 절대 따옴표를 빼먹지 마세요.
`export MY_API_KEY=”sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”` - 파일 저장 및 닫기 — 변경된 내용을 저장하고 텍스트 편집기를 닫습니다. TextEdit의 경우 Command+S, Vim의 경우 `:wq`, Nano의 경우 Control+O 후 Enter, Control+X 입니다.
- 설정 적용 — 변경된 설정이 현재 셸 세션에 즉시 적용되도록 다음 명령어를 입력합니다. 이 과정은 마치 웹 페이지 새로고침과 같습니다. Zsh 사용자는 `source ~/.zshrc`, Bash 사용자는 `source ~/.bash_profile` (또는 `source ~/.bashrc`)를 입력합니다.
`source ~/.zshrc` - 변수 확인 — 환경변수가 올바르게 설정되었는지 확인합니다. `echo $환경변수이름` 명령어를 사용하여 설정한 값이 출력되는지 확인합니다. 올바르게 출력된다면 성공입니다. 약 3초면 확인이 가능합니다.
`echo $MY_API_KEY`
설정 확인 및 보안 관리 가이드
위 5단계 과정을 모두 마쳤다면, 이제 터미널을 완전히 종료하고 다시 열어보세요. 새로운 터미널 세션에서 다시 `echo $MY_API_KEY` 명령어를 입력했을 때, 이전에 설정했던 API 키 값이 그대로 출력된다면 영구 설정이 성공적으로 완료된 것입니다. 이로써 매번 `export` 명령을 입력해야 하는 번거로움에서 벗어날 수 있습니다.
API 키를 환경변수로 관리하는 것은 중요한 보안 실천입니다. 하지만 여기서 멈추지 않고 몇 가지 추가적인 보안 관리 가이드를 따르는 것이 좋습니다. 예를 들어, Git과 같은 버전 관리 시스템을 사용할 경우, `~/.zshrc`나 `~/.bash_profile` 같은 개인 설정 파일을 절대로 프로젝트 저장소에 커밋하지 않도록 주의해야 합니다. 이 파일들은 개인 개발 환경에만 국한되어야 합니다.
또한, 여러 프로젝트에서 서로 다른 API 키를 사용하는 경우, 시스템 전역 환경변수보다는 프로젝트별로 `.env` 파일을 활용하는 방식도 고려할 수 있습니다. `.env` 파일은 프로젝트 루트에 위치하며, `.gitignore`에 추가하여 Git에 추적되지 않도록 관리할 수 있습니다. 이는 개발 환경의 유연성과 보안을 동시에 확보하는 현명한 방법 중 하나입니다.
프로젝트 단위로 환경변수를 관리해야 할 때는 `python-dotenv` (Python), `dot-env` (Node.js)와 같은 라이브러리를 활용하여 `.env` 파일을 파싱하는 방식을 고려해 볼 수 있습니다. 이 방법은 시스템 전역 환경변수와는 별개로 프로젝트의 독립적인 환경 설정을 가능하게 합니다.
맥OS에서 API 키 환경변수가 터미널을 닫으면 사라지는 문제는 셸 설정 파일(`.zshrc` 또는 `.bash_profile`)에 `export` 명령을 추가하여 영구적으로 해결할 수 있습니다.
이 5단계의 과정을 통해 안전하고 효율적인 개발 환경을 구축하고, 민감한 API 키 정보를 보안 위협으로부터 보호할 수 있습니다.
지금 바로 적용해 보세요.
- The Zsh Manual — Zsh 셸의 공식 문서입니다. 셸 설정과 환경변수 관리에 대한 더 깊이 있는 내용을 확인할 수 있습니다.
- Bash Reference Manual — Bash 셸을 사용하는 분들을 위한 공식 문서입니다. .bash_profile 및 환경변수 설정 관련 정보를 찾아볼 수 있습니다.
동영상으로 보는 맥OS에서 API 키 환경변수 설정 및 영구 적용 방법
글로 충분하지 않다면 관련 영상을 함께 보세요. 클릭하면 YouTube에서 검색 결과로 이동합니다.
자주 묻는 질문
Q. export 명령어로 설정한 환경변수가 터미널을 닫으면 왜 사라지는 건가요?
A. export 명령으로 설정한 환경변수는 현재 터미널 세션에만 유효하며, 터미널을 닫으면 해당 세션이 종료되면서 변수도 함께 사라집니다. 이는 시스템에 영구적으로 저장되지 않고 일시적으로 메모리에 로드되기 때문입니다.
Q. API 키 환경변수를 macOS에서 영구적으로 적용하려면 어떤 파일을 편집해야 하나요?
A. macOS의 기본 쉘이 `zsh`이므로 주로 `~/.zshrc` 파일을 편집하여 환경변수를 영구적으로 설정합니다. 만약 `bash` 쉘을 사용 중이라면 `~/.bash_profile` 또는 `~/.bashrc` 파일에 추가해야 합니다.
Q. 설정한 API 키 환경변수가 제대로 적용되었는지 어떻게 확인할 수 있나요?
A. 환경변수가 제대로 설정되었는지 확인하려면 터미널에서 `echo $YOUR_API_KEY_NAME` 명령어를 실행하면 됩니다. 설정이 성공했다면 설정했던 API 키 값이 터미널에 출력될 것입니다.
Q. API 키를 `~/.zshrc` 같은 쉘 설정 파일에 직접 저장해도 보안상 문제가 없나요?
A. `~/.zshrc`와 같은 쉘 설정 파일에 직접 API 키를 저장하는 것은 편리하지만, 보안상 완벽한 방법은 아닙니다. 특히 팀 프로젝트나 공개 저장소에 코드를 공유할 때는 `.env` 파일을 사용하거나 환경변수 관리 서비스를 활용하는 것이 더 안전합니다.
📚 함께 읽으면 좋은 글
