Homebrew NVM 설치 시 prefix로 경로를 설정하는 이유
시작하기에 앞서
개발 환경을 정리하다가 Node.js의 버전을 손쉽게 관리하려고 nvm을 설치하기로 했다.
기존에 쓰던 버전 말고 LTS(Long-Term Support) 버전이 필요했기 때문!
Homebrew를 통해 brew install nvm을 실행했고,
설치가 완료된 후 터미널에 나타난 안내 메시지를 그대로 복사해 셸 설정 파일(~/.zshrc 등)에 붙여넣었다.
1
2
3
4
# 터미널 안내 메세지
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
그런데 다른 블로그의 글을 보다가 나와는 다른 코드를 발견했다.
1
2
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
왜 내가 복사한 코드와 다르지? 단순히 더 간결해서인가?
궁금한건 못참음🤨
1. 절대 경로 vs. 동적 경로
내가 처음 복사한 코드는 절대 경로를 사용한다.
nvm이 Homebrew의 기본 설치 경로인 /opt/homebrew/opt/nvm에 있다고 가정하고 그 위치를 직접 명시하는 방식이다.
M1/M2 칩셋 Mac에서는 이 경로가 대부분 맞기 때문에 당장 문제는 없었다.
하지만 두 번째 코드는 동적 경로를 사용한다.
1
$(brew --prefix nvm) # 현재 nvm이 설치된 경로를 알려달라는 뜻
이 명령어는 Mac의 아키텍처(M1/M2, Intel)에 관계없이 항상 올바른 경로를 찾아 반환한다.
2. 내가 절대 경로를 지우고 prefix를 택한 이유
1) 예측 불가능한 경로 변경에 대비
Homebrew의 설치 경로는 Mac의 아키텍처가 바뀌거나, Homebrew 자체의 정책이 변경될 때 바뀔 수 있다.
절대 경로를 사용하면 이런 변화에 일일이 대응해야 하지만, prefix를 사용하면 그런 걱정을 할 필요가 없다.
2) 설정의 유연성
언젠가 다른 Mac이나 다른 환경에서 개발할 때, 동일한 설정 파일을 사용하고 싶을 수 있다.
$(brew –prefix) 방식은 모든 Homebrew 환경에서 작동하므로 설정 파일을 그대로 복사해서 쓸 수 있다.
결론
nvm 설정은 절대 경로보다 $(brew –prefix)를 사용하는 것이 더 유연하고 안전하다.