[Node.js] nvm keeps “forgetting” node in new terminal session
node itself to avoid updating the default alias along with node version updates later on.
nvm alias default node
Upon using a new terminal session in OS X,
nvm forgets the node version and defaults to nothing:
$ nvm ls:
.nvm v0.11.12 v0.11.13
I have to keep hitting
nvm use v.0.11.13 in every session:
.nvm v0.11.12 -> v0.11.13
I've tried both the
brew install, as well as the official installation script.
.profile for the brew version:
#nvm export NVM_DIR=~/.nvm source $(brew --prefix nvm)/nvm.sh
And for the install.sh script:
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash
#nvm export NVM_DIR="/Users/farhad/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
Any clue to what I'm doing wrong?
Also in case you had node installed before nvm check in your ~/.bash_profile to not have something like :
If you do have it, comment/remove it and nvm should start handling the default node version.
This question has mentioned for the OSX, but it happened to me in my linux OS.
I tried using
nvm alias default <version> but for each new terminal session the used node version was forgotten.
so, here is the solution that i figured out.
make sure to set a default alias for node version,put the following code in .bashrc, and
export NVM_DIR="/home/bonnie/.nvm" ## If the file exists and is not empty if [ -s "$NVM_DIR/nvm.sh" ]; then ## Source it source "$NVM_DIR/nvm.sh" fi NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default") export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH
In my case, another program had added
PATH changes to
If the other program changed the
PATH after nvm's initialisation, then nvm's
PATH changes would be forgotten, and we would get the system node on our
PATH (or no node).
The solution was to move the nvm setup to the bottom of
### BAD .bashrc ### # NVM initialisation export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm # Some other program adding to the PATH: export PATH="$ANT_ROOT:$PATH"
### GOOD .bashrc ### # Some other program adding to the PATH: export PATH="$ANT_ROOT:$PATH" # NVM initialisation export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
(This was with bash 4.2.46 on CentOS. It seems to me like a bug in bash, but I may be mistaken.)
nvm does its job by changing the PATH variable, so you need to make sure you aren't somehow changing your PATH to something else after sourcing the nvm.sh script.
In my case, nvm.sh was being called in .bashrc but then the PATH variable was getting updated in .bash_profile which caused my session to find the system node before the nvm node.