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.