Provavelmente você tem um /usr/local/bin/npm
e seu shell se lembra dele em seu cache. Você pode limpar o cache com %código%. O cache não é compartilhado dentro de instâncias do shell, então o problema não durará.
O motivo pelo qual a saída de hash -d npm
é inconsistente com o que seu shell faz é que which
é um programa externo, portanto, ele não compartilha o cache do bash. Use which
, é um shell integrado, por isso é mais confiável.