VSCode 터미널 command not found PATH 오류 해결 순서

VSCode 통합 터미널에서 command not found가 반복될 때 PATH와 Shell을 순서대로 점검하는 흐름입니다.


VSCode 터미널 command not found, 먼저 나눠야 할 기준

VSCode 통합 터미널에서 command not found가 반복될 때는 명령어가 설치되지 않은 문제인지, 설치는 됐지만 VSCode 터미널이 PATH를 읽지 못하는 문제인지부터 나눠야 합니다.


빠른 결론은 세 가지입니다. 일반 터미널에서도 같은 명령어가 안 되면 설치 상태나 시스템 PATH를 먼저 봐야 합니다. 일반 터미널에서는 되는데 VSCode에서만 안 되면 VSCode 터미널의 Shell, 기본 프로필, 환경변수 로딩 순서를 확인해야 합니다. Remote SSH, WSL, Dev Container 안에서는 로컬 Mac이나 Windows PATH를 고쳐도 해당 터미널에 바로 적용되지 않을 수 있습니다.


빠른 판단 기준

1) 일반 터미널에서도 안 됨 → 설치 또는 시스템 PATH 문제
2) 일반 터미널에서는 됨, VSCode에서만 안 됨 → VSCode 터미널 Shell 또는 환경변수 로딩 문제
3) Remote SSH, WSL, Dev Container 안에서 안 됨 → 로컬이 아니라 접속한 환경의 PATH 문제


자주 보이는 오류 메시지 원문

같은 원인이라도 macOS, Linux, WSL, Windows PowerShell에서 보이는 문구가 조금씩 다릅니다. 아래 메시지가 반복된다면 PATH 점검 순서로 접근하는 것이 좋습니다.


zsh: command not found: node
zsh: command not found: npm
zsh: command not found: python
zsh: command not found: pip
zsh: command not found: brew
command not found
The term 'node' is not recognized

특히 node, npm, python, pip, brew, git은 설치 위치가 환경마다 달라질 수 있습니다. 그래서 “설치했는가”보다 “현재 터미널이 그 위치를 PATH에서 보고 있는가”를 확인해야 합니다.


언제 발생하는 오류인가

VSCode 터미널의 PATH 오류는 설치 직후보다 “환경이 바뀐 뒤”에 자주 나타납니다. 새 터미널을 열었을 때, Homebrew·nvm·pyenv를 설치한 직후, macOS 기본 터미널에서는 되는데 VSCode에서는 안 될 때, Windows PowerShell과 VSCode PowerShell 결과가 다를 때, WSL·Remote SSH·Dev Container 창을 열었을 때 많이 발생합니다.


상황 먼저 볼 것
VSCode 통합 터미널을 새로 열었을 때 기본 터미널 프로필과 현재 Shell
Homebrew 설치 후 brew가 안 보일 때 Apple Silicon과 Intel Mac의 Homebrew 경로 차이
nvm 설치 후 node, npm이 안 보일 때 nvm 초기화 코드가 Shell 설정 파일에서 읽히는지
pyenv 설치 후 python, pip가 안 보일 때 pyenv 초기화 코드와 python3, pip3 사용 여부
WSL, Remote SSH, Dev Container에서 안 될 때 로컬이 아닌 접속한 환경의 PATH

원인 5가지: 설치 문제와 PATH 문제를 분리하기

VSCode 터미널에서 명령어를 못 찾는 원인은 대부분 아래 다섯 가지 중 하나입니다.


1. 명령어가 실제로 설치되지 않음
일반 터미널과 VSCode 터미널 양쪽에서 모두 안 되면 설치 상태를 먼저 확인합니다.

2. 설치는 됐지만 PATH에 경로가 없음
명령어 파일은 있는데 터미널이 찾을 수 없는 위치에 있을 수 있습니다.

3. 다른 Shell 설정 파일을 수정함
.zshrc, .zprofile, .bashrc, .bash_profile 중 현재 Shell이 읽는 파일과 수정한 파일이 다를 수 있습니다.

4. VSCode 터미널 기본 프로필이 예상과 다름
zsh를 고쳤지만 VSCode는 bash나 PowerShell을 열고 있을 수 있습니다.

5. 다른 환경의 터미널을 보고 있음
WSL, Remote SSH, Dev Container에서는 로컬 PATH가 아니라 Linux, 원격 서버, 컨테이너 내부 PATH가 기준입니다.


빠른 점검 순서: 위에서 아래로 확인하기

PATH 문제는 여러 설정을 동시에 고치면 원인을 놓치기 쉽습니다. 아래 순서대로 비교하면 “설치가 안 된 것인지”, “VSCode만 못 읽는 것인지”, “원격 환경을 보고 있는 것인지”가 분리됩니다.


  1. 일반 터미널과 VSCode 터미널에서 같은 명령어를 실행합니다.
  2. 현재 Shell을 확인합니다.
  3. PATH 값을 확인합니다.
  4. command -v 또는 Get-Command로 실제 명령어 위치를 확인합니다.
  5. Homebrew 경로가 PATH에 포함됐는지 봅니다.
  6. nvm, pyenv 초기화 코드가 현재 Shell에서 읽히는지 확인합니다.
  7. VSCode 기본 터미널 프로필을 확인합니다.
  8. Remote SSH, WSL, Dev Container 여부를 확인합니다.
  9. VSCode에서 Developer: Reload Window를 실행하거나 앱을 완전히 다시 엽니다.

Mac과 Linux에서 확인할 명령어

macOS와 Linux, WSL의 Linux 터미널에서는 아래 명령어로 Shell, PATH, 명령어 위치를 확인할 수 있습니다. 결과가 비어 있으면 현재 터미널이 해당 명령어 위치를 찾지 못하고 있다는 뜻입니다.


echo $SHELL
echo $PATH

command -v node
command -v npm
command -v python3
command -v pip3
command -v brew
command -v git

명령어 위치가 확인되면 버전 명령으로 실제 실행 여부를 봅니다.


node -v
npm -v
python3 --version
pip3 --version
git --version
brew --version

command -v node는 비어 있는데 node -v도 실패한다면 PATH 또는 설치 상태를 봐야 합니다. 반대로 일반 터미널에서는 command -v node가 나오고 VSCode에서만 비어 있다면 VSCode 터미널이 다른 Shell 설정을 읽고 있을 가능성이 큽니다.


Windows PowerShell에서 확인할 명령어

Windows에서는 PowerShell, Command Prompt, Git Bash, WSL이 서로 다른 환경처럼 동작할 수 있습니다. VSCode 오른쪽 위 터미널 프로필 이름이 PowerShell인지, Command Prompt인지, WSL인지 먼저 확인합니다.


$env:Path

Get-Command node
Get-Command npm
Get-Command python
Get-Command git

PowerShell에서 Get-Command node가 실패하고, 일반 PowerShell에서는 성공한다면 VSCode가 다른 프로필을 열고 있거나 PATH 변경 전의 환경을 계속 보고 있을 수 있습니다. 이 경우 새 터미널을 만들고, 필요하면 VSCode 창을 다시 로드합니다.


Mac에서 확인할 PATH 포인트

Mac은 Homebrew 설치 위치가 Apple Silicon과 Intel Mac에서 다를 수 있습니다. command not found가 brew, node, python3와 함께 나타난다면 아래 경로가 PATH에 포함되어 있는지 확인합니다.


Mac 종류 자주 쓰이는 Homebrew 경로 확인 포인트
Apple Silicon Mac /opt/homebrew/bin echo $PATH에 해당 경로가 보이는지 확인
Intel Mac /usr/local/bin 기존 가이드가 Intel 기준인지 Apple Silicon 기준인지 구분

zsh를 사용할 때 .zshrc.zprofile은 읽히는 시점이 다를 수 있습니다. 일반적으로 .zprofile은 로그인 Shell 쪽, .zshrc는 대화형 Shell 쪽 설정에 사용됩니다. 다만 VSCode 터미널 프로필과 실행 방식에 따라 실제 로딩 흐름이 달라질 수 있으므로, 현재 Shell과 PATH 출력값을 기준으로 판단하는 것이 안전합니다.


Mac에서 핵심은 경로 비교입니다.
일반 터미널의 echo $PATH와 VSCode 터미널의 echo $PATH를 나란히 비교하세요. Homebrew, pyenv, nvm 경로가 VSCode 쪽에서만 빠져 있으면 설치보다 Shell 설정 로딩 문제일 가능성이 높습니다.


nvm과 pyenv는 깊게 고치기 전에 위치부터 확인하기

nvm은 Node.js 버전 관리 도구라 node, npmcommand not found와 연결될 수 있습니다. pyenv는 Python 버전 관리 도구라 python, python3, pip, pip3 경로 문제와 연결될 수 있습니다.


이 단계에서 중요한 것은 설정 파일을 많이 고치는 것이 아니라, 현재 VSCode 터미널이 nvm 또는 pyenv 초기화 코드를 읽고 있는지 확인하는 것입니다. 일반 터미널에서는 node가 보이는데 VSCode에서만 안 보이면 nvm 초기화 코드가 VSCode의 현재 Shell에서 읽히지 않을 수 있습니다. Python도 같은 방식으로 pyenv 경로가 VSCode PATH에 들어오는지 비교합니다.


command -v node
command -v npm
command -v python3
command -v pip3

echo $SHELL
echo $PATH

Node.js 버전 전환 문제는 nvm 설정과 함께 확인해야 하고, Python 인터프리터 문제는 VSCode가 선택한 인터프리터와 가상환경까지 함께 봐야 합니다. 관련 세부 점검은 아래 내부링크에서 이어서 확인할 수 있습니다.


VSCode에서 확인할 터미널 설정

일반 터미널에서는 정상인데 VSCode에서만 command not found가 나온다면 VSCode 안에서 현재 어떤 터미널 프로필이 열리는지 확인합니다.


VSCode 확인 순서

1. Command Palette를 엽니다.
2. Terminal: Select Default Profile을 실행합니다.
3. zsh, bash, PowerShell, Command Prompt, WSL 중 어떤 프로필이 기본인지 확인합니다.
4. Terminal: Create New Terminal로 새 터미널을 엽니다.
5. 터미널 우측 상단의 프로필 이름을 확인합니다.
6. 설정 반영이 애매하면 Developer: Reload Window를 실행합니다.


프로필 이름이 예상과 다르면 .zshrc를 고쳐도 PowerShell에는 반영되지 않고, PowerShell PATH를 고쳐도 WSL 터미널에는 반영되지 않습니다. VSCode 터미널 문제는 “어떤 설정 파일을 고쳤는가”보다 “지금 열린 터미널이 무엇인가”가 더 중요합니다.


Remote SSH, WSL, Dev Container에서는 로컬 PATH가 기준이 아닐 수 있음

VSCode 왼쪽 아래 상태 표시줄이나 터미널 프롬프트를 보면 현재 창이 로컬인지, Remote SSH인지, WSL인지, Dev Container인지 확인할 수 있습니다. 이 구분을 놓치면 로컬 PATH를 계속 고쳐도 터미널 결과가 바뀌지 않을 수 있습니다.


환경 PATH 기준 확인할 점
VSCode 로컬 터미널 현재 PC의 Shell과 PATH Mac zsh, Windows PowerShell 등 로컬 프로필 확인
Remote SSH 원격 서버의 Shell과 PATH 로컬 Mac·Windows가 아니라 서버에 설치된 node, python, git 확인
WSL WSL Linux 배포판 내부 PATH Windows PATH와 Linux PATH가 다를 수 있음
Dev Container 컨테이너 내부 PATH 컨테이너 이미지 안에 설치된 명령어만 사용 가능

Remote SSH에서는 원격 서버에 설치된 명령어와 원격 서버의 PATH를 봐야 합니다. WSL에서는 Windows의 Node.js나 Python을 설치해도 WSL Linux 터미널에서 바로 같은 방식으로 보이지 않을 수 있습니다. Dev Container에서는 로컬 PC가 아니라 컨테이너 안에 설치된 명령어만 기본적으로 사용할 수 있습니다.


자주 하는 실수와 확인 기준

PATH 오류는 작은 착각 때문에 길어지는 경우가 많습니다. 아래 항목을 한 번만 훑어도 원인을 빠르게 좁힐 수 있습니다.


실수 1. .zshrc를 수정했지만 VSCode 창을 다시 열지 않음
새 터미널을 열거나 Developer: Reload Window를 실행해 설정 반영 여부를 확인합니다.

실수 2. node는 설치했지만 nvm 초기화 코드가 빠짐
command -v node 결과가 비어 있으면 nvm 경로가 현재 Shell에 들어오는지 봅니다.

실수 3. Homebrew 경로를 Mac 종류와 다르게 넣음
Apple Silicon은 /opt/homebrew/bin, Intel Mac은 /usr/local/bin을 기준으로 확인합니다.

실수 4. python 대신 python3를 써야 하는 환경을 구분하지 않음
환경에 따라 python이 없고 python3만 있을 수 있으므로 둘을 나눠 확인합니다.

실수 5. 로컬 터미널인 줄 알았는데 WSL 또는 Dev Container 터미널을 보고 있음
VSCode 왼쪽 아래 상태 표시줄과 터미널 프롬프트를 먼저 확인합니다.


문제를 좁히는 마지막 비교표

아래처럼 결과를 비교하면 다음 행동이 분명해집니다.


비교 결과 가능성이 큰 원인 다음 확인
일반 터미널과 VSCode 모두 실패 설치 누락 또는 시스템 PATH 문제 공식 설치 문서와 버전 명령 확인
일반 터미널은 성공, VSCode만 실패 VSCode 터미널 프로필 또는 Shell 로딩 문제 기본 프로필, echo $SHELL, echo $PATH 비교
로컬은 성공, Remote SSH에서 실패 원격 서버에 명령어가 없거나 PATH가 다름 원격 서버에서 command -v 실행
Windows는 성공, WSL에서 실패 Windows와 WSL Linux 환경 차이 WSL 내부 설치 상태와 Linux PATH 확인
로컬은 성공, Dev Container에서 실패 컨테이너 이미지 안에 명령어가 없음 컨테이너 내부에서 버전 명령 실행

공식 자료로 더 확인하기


함께 보면 좋은 글


FAQ

Q1. 일반 터미널에서는 되는데 VSCode에서만 command not found가 뜨는 이유는?

대부분 VSCode 통합 터미널이 일반 터미널과 다른 Shell 또는 다른 프로필을 열고 있기 때문입니다. 일반 터미널의 echo $SHELL, echo $PATH, command -v node 결과와 VSCode 터미널 결과를 비교하면 차이를 확인할 수 있습니다. VSCode 우측 상단의 터미널 프로필 이름도 함께 봐야 합니다.

Q2. .zshrc를 수정했는데도 VSCode 터미널에 반영되지 않는 이유는?

현재 VSCode 터미널이 zsh가 아닐 수 있고, zsh라도 설정 파일이 읽히는 시점이 다를 수 있습니다. echo $SHELL로 현재 Shell을 확인하고, 새 터미널을 만든 뒤 echo $PATH가 바뀌었는지 봅니다. 계속 그대로라면 Developer: Reload Window로 VSCode 창을 다시 로드해 확인합니다.

Q3. node와 npm만 command not found가 뜨면 무엇을 봐야 하나요?

nodenpm만 안 보이면 nvm 또는 Node.js 설치 경로를 먼저 확인합니다. command -v node, command -v npm이 비어 있는지 보고, 일반 터미널과 VSCode 터미널의 PATH 차이를 비교합니다. nvm을 쓴다면 초기화 코드가 현재 Shell에서 읽히는지가 핵심입니다.

Q4. WSL이나 Dev Container에서는 왜 로컬 PATH 수정이 적용되지 않나요?

WSL은 Windows 안에서 실행되지만 Linux 배포판의 PATH를 기준으로 동작하고, Dev Container는 컨테이너 내부 환경을 기준으로 동작합니다. 그래서 로컬 Mac이나 Windows PATH를 고쳐도 WSL 또는 컨테이너 터미널에는 그대로 반영되지 않을 수 있습니다. 현재 VSCode 창이 어떤 환경에 연결되어 있는지 먼저 확인해야 합니다.


VSCode 터미널의 command not found 오류는 설치 여부보다 “현재 어떤 터미널에서 어떤 PATH를 읽고 있는지”를 먼저 나누면 훨씬 빠르게 해결할 수 있습니다.