Faz todo o sentido agora ...
Havia uma linha perdida na .profile minha empresa usa, pois muitas pessoas ainda usam ksh :
set -o vi
Bem, adivinhe o que acontece em vi se você digitar ~ ? Isso mesmo, troca o caso! E adivinhe o que acontece se você digitar 3~ ? Troca o case de 3 caracteres! (Embora eu ainda não tenha certeza agora para explicar o comportamento inconsistente onde às vezes ele troca um e às vezes troca 3 ...)
De qualquer forma, remover o set -o vi do meu .profile resolveu o problema.