1

I tried to use snap to install node. The package was stale. So, I snap remove'd that, and I installed node via apt from the nodesource PPA. Great:

$ node -v
v14.15.5

However, when I try to use npm, I get the following error:

$ npm
bash: /snap/bin/npm: No such file or directory

This is weird to me, since /usr/bin is on my $PATH and:

$ ls /usr/bin/npm
/usr/bin/npm

What has snap done to my system's normal method of looking for binaries in $PATH?

Also, how do I fix this?

Him
  • 162

1 Answers1

3

Your shell doesn't constantly search for binaries once it's found one-- to do so would be a waste of time in most cases. It caches the result. That bites hard if you end up removing a binary after it's already cached where it found it, though.

You can fix this by simply starting a new shell, or clearing the cache in an existing shell with hash -r.

kyrofa
  • 7,346
  • 1
  • 32
  • 26
  • "starting a new shell" — is that equivalent to "open a new terminal window"? So this looking for binaries / caching happens every time a new terminal window is opened? – Levente Mar 18 '21 at 00:59
  • 1
    Opening a new window does start a new shell, but that's not the only way to do it (e.g. you might use screen, or byobu, or SSH...). – kyrofa Mar 19 '21 at 01:21