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 설정과 안 될 때 확인할 것
여기 나오는 명령과 출력은 맥에서 직접 돌려 확인한 것이다. 경로의 사용자 이름만 예시로 바꿨다.

'기타팁 및 문제 해결' 카테고리의 다른 글
| 내부 스크립트 외부 공개: 사용자 친화적 문서화로 전환 (0) | 2026.09.06 |
|---|---|
| 자동화 에이전트 조용한 실패, 외부 감시 스크립트로 해결 (0) | 2026.09.05 |
| 맥에서 외장 SSD가 안 보일 때, 어디부터 봐야 하나 (0) | 2026.09.02 |
| 윈도우에서 npm 설치했는데 명령어가 안 먹을 때, PATH부터 확인 (0) | 2026.09.01 |
| YouTube 쇼츠 조회수 10배 상승, 제목 변경의 착각 (0) | 2026.08.30 |