O Bash mantém um cache de locais de comando na memória, para que não precise fazer toda a exploração PATH toda vez que você iniciar um comando. Na sua sessão bash original, bash havia memorizado anteriormente que mono era /usr/bin/mono . Em seguida, você removeu /usr/bin/mono e adicionou /usr/local/bin/mono , mas seu bash em execução ainda tinha o local antigo em seu cache.
Você pode manipular o cache do local de comando com o hash builtin. Em particular hash -r limpa o cache.
which é um comando externo, portanto, ele não usa o cache do bash e executa uma consulta PATH todas as vezes. Você também pode ter usado o type , que é interno e, portanto, usa o cache de pesquisa.