기타팁 및 문제 해결

맥 환경변수 설정하는 법, zshrc에 넣었는데 안 먹을 때

AI 로컬 LLM 2026. 9. 3. 17:55

command not found. 분명히 깔았는데 터미널이 모르겠다고 한다. 환경변수를 설정하라는 글을 보고 따라 했는데 여전히 안 된다.

설정 자체는 두 줄이면 끝난다. 문제는 그 두 줄이 어디에서는 먹고 어디에서는 안 먹는다는 것이다. 이 글은 설정하는 법과, 설정했는데 안 먹는 자리들을 순서대로 적은 것이다.

기본: .zshrc에 넣는다

요즘 맥의 기본 셸은 zsh다. 설정 파일은 홈 폴더의 .zshrc다.

nano ~/.zshrc

맨 아래에 한 줄을 넣는다. 예를 들어 어떤 프로그램이 /opt/homebrew/bin에 깔려 있다면 이렇게 한다.

export PATH="/opt/homebrew/bin:$PATH"

$PATH를 뒤에 붙이는 게 중요하다. 이걸 빼면 기존 경로가 전부 날아가서 기본 명령어까지 안 먹는다. 처음 설정하는 사람이 자주 하는 실수다.

경로가 아닌 값도 같은 방식이다.

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home"

저장하고 나면 지금 열린 창에 바로 적용한다.

source ~/.zshrc

새 터미널 창을 열어도 된다. 확인은 두 줄이면 된다.

echo $PATH
which node

which가 경로를 뱉으면 성공이다. 아무것도 안 나오면 그 명령어를 아직 못 찾고 있는 것이다.

막히는 자리 1. bash_profile에 넣었다

인터넷 글을 따라 하다 .bash_profile이나 .bashrc에 넣는 경우가 많다. 오래된 글이 그렇게 적혀 있어서다.

맥은 카탈리나부터 기본 셸이 zsh다. bash 설정 파일은 읽지 않는다. 넣어도 아무 일이 안 일어나고 에러도 안 난다. 지금 쓰는 셸이 뭔지는 이렇게 본다.

echo $SHELL

/bin/zsh가 나오면 .zshrc에 넣어야 한다.

막히는 자리 2. 앱이나 자동 실행에서는 안 먹는다

여기가 진짜다. 터미널에서는 분명히 되는데, 자동 실행으로 돌리면 command not found가 난다.

.zshrc는 터미널을 열 때만 읽힌다. 맥의 자동 실행(launchd)이나 예약 실행(cron)은 터미널을 거치지 않으므로 그 파일을 읽지 않는다. 그쪽 환경은 훨씬 빈약하다.

직접 비교해보면 바로 보인다.

터미널에서는 경로가 줄줄이 나오는데 launchctl getenv PATH는 아무것도 안 뱉는다. 자동 실행이 물려받는 환경에는 그 값이 없다는 뜻이다. 여기서 node를 부르면 못 찾는다.

해결은 세 가지고 같이 써도 된다.

하나. 설정 파일에 직접 적는다. launchd 설정(plist)에 EnvironmentVariables 항목을 만들어 넣는다.

<key>EnvironmentVariables</key>
<dict>
    <key>PATH</key>
    <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
    <key>HOME</key>
    <string>/Users/me</string>
</dict>

둘. 실행 스크립트 첫머리에서 내보낸다. 이쪽이 고치기 쉽다.

export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"

셋. 로그인 셸로 감싼다. 이러면 .zshrc를 읽고 시작한다.

zsh -l -c '실행할 명령'

막히는 자리 3. PATH 말고도 없는 게 있다

화면을 그리는 프로그램이라면 TERM과 LANG도 봐야 한다. 자동 실행 환경에는 이것도 없다. 없으면 프로그램이 시작하다가 죽지도 않고 멈춘 채로 있는다.

export TERM="${TERM:-xterm-256color}"
export LANG="${LANG:-en_US.UTF-8}"

확인하는 법

자동 실행에서 뭐가 안 먹는지 모르겠으면, 실제로 어떤 환경으로 도는지 파일로 찍어보면 된다. 스크립트 맨 위에 한 줄을 넣는다.

env > /tmp/env_check.txt

한 번 돌린 뒤 그 파일을 열어보면 그 환경에 무엇이 있고 없는지 한눈에 나온다. 추측할 필요가 없다.

정리

  • 맥은 zsh다. .zshrc에 export로 넣고 $PATH를 뒤에 붙인다
  • 확인은 echo $SHELL, echo $PATH, which 명령어
  • 터미널에서 되는 것과 자동 실행에서 되는 것은 별개다. .zshrc는 터미널만 읽는다
  • 자동 실행 쪽은 설정 파일에 직접 적거나, 스크립트에서 내보내거나, 로그인 셸로 감싼다
  • 막히면 env를 파일로 찍어본다

자동 실행 자체를 설정하는 방법은 따로 적었다. 맥 시작 시 프로그램 자동 실행, launchd 설정과 안 될 때 확인할 것

여기 나오는 명령과 출력은 맥에서 직접 돌려 확인한 것이다. 경로의 사용자 이름만 예시로 바꿨다.

맥미니로 만드는 AI 홈서버 — 직접 돌려보고 씁니다