Citando o manual bash
:
O Bash usa uma tabela de hash para lembrar os nomes completos dos arquivos executáveis. Uma pesquisa completa dos diretórios no PATH é executada somente se o comando não for encontrado na tabela de hash.
Aqui, o que aconteceu é que você:
- removeu o original
/usr/bin/vim
e - criou um novo
/usr/local/bin/vim
.
Nesse caso, a tabela de hash do caminho de bash
nunca foi atualizada, portanto, quando você chamar vim
após 1 e 2, ele localizará o caminho com hash antigo. Para forçar uma atualização de hash de caminho, use hash -r
.
AFAICT, bash
tem um comportamento estranho e não documentado, em que:
Se você chamar
vim
entre 1 e 2 (levando a um "comando não encontrado" legítimo), então o caminho com hash é removido automaticamente , então quando você chamevim
novamente depois de 2, ele funciona bem.
O que eu não entendo é por que bash
não remove automaticamente o caminho quando vim
é chamado após 1 e 2 (como no seu caso), e o caminho errado é encontrado. Mas é isso que está acontecendo.