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/vime - 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
vimentre 1 e 2 (levando a um "comando não encontrado" legítimo), então o caminho com hash é removido automaticamente , então quando você chamevimnovamente 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.