De link por usuário frostschutz no Unix Stackexchange:
É uma coisa de desempenho; em vez de pesquisar todo o caminho para o binário toda vez que é chamado, ele é colocado em uma tabela de hash para uma pesquisa mais rápida. Portanto, qualquer binário que já esteja nessa tabela de hash está com hash. Se você mover binários quando eles já estiverem com hash, ele ainda tentará chamá-los no local antigo.
Veja também
help hash
, ouman bash
e procure porhash
sob comandos internos.