bash: command not found: nvm
zsh: command not found: nvm
위 오류 메시지 해결법을 알려주는 블로그는 이미 많다. 그리고 nvm 공식 문서도 사실 차근차근 읽어보면 'Troubleshooting on Linux'에서 해결법을 안내해주고 있다.
https://github.com/nvm-sh/nvm#install--update-script
그런데 내가 이 글을 쓰고 있는 이유는 당시의 나에겐 그 수많은 블로그 글들이 하나도 이해가 되지 않았고, 시키는 대로 재설치를 하면 설치는 이미 완료됐다고 하는데 터미널에 'nvm -v'를 아무리 쳐봐도 저 오류 메시지와 만나야 했기 때문이다. 그래서 이 글은 나같이 코딩에 대한 기본지식 하나도 없는, 어쩌면 오늘 막 터미널을 처음 실행해본 사람들이 같은 오류를 해결하는데 쓰는 시간을 줄일 수 있었으면 해서 쓰는 공익 목적의 글입니다…
이 'command not found' 오류는 MacOS Mojave 운영체제부터 환경변수가 적용되어 터미널을 새로 실행시킬 때마다 .bash_profile 혹은 .zshr이 새로 로드되기 때문에 발생한다.
…뭔소리야.
이제 막 코딩 배우는 사람이 환경변수가 뭔지 알 리가 있나.
하지만 환경변수가 뭔지는 몰라도 우리는 이 오류를 해결해야 하고, 해결할 수 있다.
일단 오류 메시지가 어떻게 뜨는지를 알아야 하는데 아마 이 둘 중 하나일 것이다.
1) bash: command not found: nvm
2) zsh: command not found: nvm
앞의 bash와 zsh가 현재 사용중인 쉘(운영체제에서 사용자가 입력하는 명령어를 읽고 해석해서 실행해주는 인터페이스 프로그램)을 말해준다. OS에 따라 쉘이 다르고, 쉘이 무엇이냐에 따라 수정해줘야 하는 파일이 달라지기 때문에 bash인지 zsh인지 꼭 확인해야 한다.
나는 2020년에 공개된 Big Sur OS를 사용하고 있기 때문에 쉘은 zsh를 쓰고 있다.
그래서 나처럼 zsh 쉘 쓰는 사람이 아무것도 모르고, 2019년 블로그 따라서 vi ~/.bash_profile를 아무리 따라쳐봤자… 아무 일도 일어나지 않는다…
일단 zsh 쉘을 기준으로 설명하자면,
1. 일단 touch로 zshrc 파일을 생성해준다.
bash 쉘의 경우 '.zshrc' 대신 '.bash_profile'이라고만 써주면 된다.
touch ~/.zshrc
2. vi 에디터로 zshrc 파일을 실행한다.
vi ~/.zshrc
꼭 vi 에디터가 아니어도 된다. 비쥬얼 스튜디오 코드로 열어도 되고, 나노 에디터여도 되고 사용하기 편한 에디터를 사용하면 된다.
3. 파일 내에 코드 입력
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
vi 에디터로 편집 중이라면, ':wq' 를 입력해서 저장후 종료한다.
4. 터미널을 재로그인하거나, source 명령어로 스크립트 실행
source ~/.zshrc
이제 터미널을 재실행해도 nvm이 문제없이 실행될 것이다! 🎉
다른 블로그들에서 시키는 대로 vi ~/.bash_profile 을 쳐보다가 이런 메시지를 봤을 수도 있다…
".bash_profile.swp" already exists!
이 오류 메시지는, vi 에디터를 저장 없이 종료했기 때문에 발생하는 메시지다.
vi 명령어를 치면 나오는 '~~' 끝없는 물결표에 당황해서 그냥 종료 버튼을 누른 거라면… 내가 그랬다.
(vi 에디터 기본 명령어로 검색하면, 좋은 블로그들이 많다……
꼭 :q(저장 없이 종료)나 :wq(저장 후 종료)치고 종료하기………… 🥲)
vi 에디터는 실행하고 파일을 저장하지 않은 채로 비정상 종료한 경우, 파일 확장자를 자동으로 .swp로 수정하여 임시저장 파일 같은 형식으로 만들어버린다.
터미널에 'ls -a' 명령어를 쳐 숨김 파일까지 전부 표시하면, 폴더 내에 .bash_profile.swp이 존재하는 것을 확인할 수 있을 것이다.
.swp 확장자 파일은 rm 명령어로 삭제해줘도 되고, mv로 변경해줘도 되고…
rm .bash_profile.swp
mv .bash_profile.swp .bash_profile
아무튼 swp 파일을 처리한 후, 위의 해결법을 따라하면 'command not found' 오류는 해결이 될 것이다! 🙂
아무튼 이 글을 읽으시면서 아마 '뭐 이런 것도 몰라?' 싶은 부분이 많겠지만, 나는 정말 노베이스로 코딩을 시작했다. 분명 나 같은 사람도 있을 거라 생각하기에 이 글을 썼다. 그런 사람들에게 조금이나마 도움이 됐길…
내가 2019년 글 정도면 오류 해결에 아무 문제가 없을 거라고 생각했지만, 2년 전 글조차 낡은 글이었듯… OS는 또 업데이트될 것이고, 오류 해결법은 또 달라질 수 있다.
오류메시지에 이미 지쳐서 당장은 한국말로 쓰인 블로그 글을 읽고 싶겠지만, 일단 공식 설치 페이지를 차근차근 읽어보는 걸 추천한다. 결국 블로그 글들도 다 공식 페이지에서 나오는 거니까…
아무튼 이런 나도 하고 있으니… 다들 포기하지 말고 화이팅!! 🔥
감사합니다