O comportamento é consistente em ter códigos de console no seu prompt (para alterar a cor, etc.) e não marcá-los adequadamente, para que o bash saiba que eles são invisíveis.
Antes de mais nada, faça isso:
PS1='\w\$ '
E tente novamente. Se o problema for resolvido, minhas suspeitas estão corretas.
Cada seqüência de código do console deve ser delimitada com \[
e \]
na variável PS1. Eles dizem bash que tudo o que está lá não move a posição do cursor. Leia o manual bash para mais informações.