The shell forgets that node and npm are installed every time I log in or switch to a different user.

Posted September 3, 2013 3.8k views
Whenever I log in or switch back to my main user account, the shell throws "command not found" errors for node and npm. In order to make it work, I have to run `$ source ~/.profile; npm use 0.10.17`. After that, the node command works again. On IRC, someone suggested adding these commands to my .bashrc file, but when I did that, loading .bashrc hangs indefinitely. As a Mac user, I'm used to using .bash_profile like this, but this isn't working like I expected. What is the path to enlightenment on this?

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
7 answers
What did you add to .bashrc?
Hi Kamal!

I just appended the two commands to the bottom of my .bashrc, as if it were a shell script:

source ~/.profile;
npm use 0.10.17;

Today, I learned more about nvm, and realized that the command nvm alias default 0.10.17 was exactly what I needed. For some reason, I didn't realize what nvm was when I followed the Node VPS installation instructions, and I mistook it for npm.
Oh. So does it work fine now?
Yes, It works immediately now whenever I log in fresh. The only time it doesn't work is when I switch user to my username with su john, but then I can just source my .profile and it remembers that node exists.
Ugh, there's no edit button, and my code element wasn't closed.
Try running su -l join instead. This spawns a login shell (and not just an interactive bash shell) which sources .profile and .bashrc.

Let me know if that works!
P.S.: I've fixed your post :]