~/.zshrc에서 특정 환경 변수 (예: ANTHROPIC_BASE_URL)를 분명히 삭제했지만, 터미널에서 확인해보면 놀랍게도 여전히 남아있습니다!
source ~/.zshrc를 다시 실행해 보아도 전혀 소용이 없으신가요?
환경 변수가 존재하는지, 어떤 설정 파일에서 작성되었는지 확인하는 방법
정리를 시작하기 전에 먼저 해당 변수가 현재 메모리에 남아있는지, 그리고 어떤 설정 파일이 이를 자동으로 로드하고 있는지 확인해야 합니다.
1. 메모리 변수 확인
현재 Terminal 메모리에 해당 환경 변수가 여전히 남아있는지 확인합니다
env | grep -i anthropic
2. 설정 파일 출처 검색
Zsh, Bash 및 시스템 수준 설정 파일을 종합적으로 검색하여 해당 변수를 작성한 파일을 찾아냅니다
grep -rn "ANTHROPIC_BASE_URL" ~/.zshrc ~/.zprofile ~/.zshenv ~/.zlogin ~/.bashrc ~/.bash_profile ~/.profile /etc/zshenv /etc/zprofile /etc/profile /etc/environment 2>/dev/null
.zshrc를 수정해도 이전 환경 변수가 남아있는 이유는?
사실 터미널을 열 때 환경 변수는 이미 해당 연결의 “메모리"에 로드된 상태입니다.
파일을 수정하거나 source ~/.zshrc를 다시 실행하더라도, 이는 설정 파일의 내용을 “다시 로드"할 뿐이며 메모리에 이미 존재하는 이전 변수를 자동으로 삭제해주지는 않습니다.
source명령은 변수를 덮어쓰거나 추가할 뿐, 변수를 “삭제"해주지 않습니다
이때 가장 간단한 해결 방법은 다음과 같습니다:
| 정리 방법 | 작업 명령 / 동작 | 설명 |
|---|---|---|
| 새 창 열기 | 완전히 새로운 터미널 탭 열기 | 새 Shell Process가 최신 ~/.zshrc를 다시 읽어옵니다 |
| 수동 삭제 | unset ANTHROPIC_BASE_URL |
현재 메모리에서 지정된 환경 변수를 직접 삭제합니다 |
| 쉘 리셋 | exec zsh -l |
현재 Shell의 메모리 상태를 다시 로드합니다 |
터미널 창을 다시 열어도 소용없다? 원인 3가지 파악하기
왜 때로는 완전히 새로운 터미널 창을 열었음에도 이전 환경 변수가 계속 남아있는 걸까요?
이 경우 문제는 더 이상 ~/.zshrc에 있지 않고, “부모 프로세스 (Parent Process)“로부터의 상속 때문입니다!
소프트웨어 애플리케이션에서 터미널을 실행할 때, 자식 프로세스는 부모 프로세스의 당시 환경 변수 스냅샷을 그대로 복사합니다.
이러한 완고한 환경 변수를 마주쳤다면 보통 다음 3가지 원인 중 하나입니다:
| 유형 | 원인 | 해결 방법 |
|---|---|---|
| IDE 내장 터미널 | VS Code, Cursor 또는 Antigravity가 시작 시 당시의 환경 변수 스냅샷을 기록함 |
Cmd + Q를 눌러 IDE를 완전히 종료한 후 다시 실행 |
| 터미널 소프트웨어 미종료 | Mac의 Terminal 또는 iTerm2에서 창만 닫고(Cmd + W) 메인 앱이 백그라운드에서 실행 중임 |
Cmd + Q를 눌러 Terminal 앱을 완전히 종료 |
| tmux | tmux 백그라운드 Server가 지속 실행되어 새 탭이 시작 시 설정을 계속 상속함 |
tmux kill-server를 실행하여 백그라운드 서비스 종료 |
앱을 다시 실행해도 효과가 없다? 서드파티 도구 및 시스템 수준 설정 확인
위의 3가지 방법을 모두 시도했음에도 환경 변수가 Terminal에 계속 나타난다면, 상위 수준의 시스템 설정이나 서드파티 도구가 작동 중일 수 있습니다.
높은 시스템 권한이나 래퍼 스크립트로 인해 실행할 때마다 환경 변수가 자동으로 복구될 수 있습니다
이 경우 다음 2가지 감지 명령을 사용할 수 있습니다:
| 감지 대상 | 명령 | 설명 |
|---|---|---|
| 시스템 전역 변수 | launchctl getenv ANTHROPIC_BASE_URL |
서드파티 프록시 도구가 launchctl setenv를 사용하여 전역 변수를 설정했는지 확인 |
| 명령 래퍼 스크립트 | type claude |
현재 명령이 원본 실행 파일인지, 기본 변수가 포함된 wrapper 스크립트로 래핑되었는지 확인 |
환경 변수를 완전히 삭제하기 위한 표준 문제 해결 단계
다음 번에 ~/.zshrc에서 환경 변수를 수정하거나 삭제할 때는 먼저 현재 터미널이 이전 Parent Process 설정을 상속받았는지 확인하세요.
다음 확인 순서를 따르면 원인을 쉽게 찾고 문제를 해결할 수 있습니다:
- 먼저
unset 변수이름을 실행하거나 새로운 터미널 창을 엽니다. VS Code나Cursor같은IDE를 사용하는 경우,Cmd + Q를 눌러IDE를 완전히 재시작합니다.tmux를 사용하는 경우,tmux kill-server를 실행하여 백그라운드 서비스를 리셋합니다.launchctl getenv와type명령을 확인하여 시스템 수준 및 래퍼 스크립트를 조사합니다.