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

  • Posted September 3, 2013

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?


Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

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.

P.S.: I’ve fixed your post :]

Try running <code>su -l join</code> instead. This spawns a login shell (and not just an interactive bash shell) which sources .profile and .bashrc. <br> <br>Let me know if that works!

</code> Ugh, there’s no edit button, and my code element wasn’t closed.

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 <code>su john</code>, but then I can just source my .profile and it remembers that node exists.

Oh. So does it work fine now?

Hi Kamal! <br> <br>I just appended the two commands to the bottom of my .bashrc, as if it were a shell script: <br> <br><pre><code> <br>source ~/.profile; <br>npm use 0.10.17; <br></code></pre> <br> <br>Today, I learned more about nvm, and realized that the command <code>nvm alias default 0.10.17</code> was exactly what I needed. For some reason, I didn’t realize what nvm was when I followed the <a href=‘’>Node VPS installation instructions</a>, and I mistook it for npm.

What did you add to .bashrc?