read
in bash
é um comando interno. read -e
usa a edição de bash
em tela cheia por meio da biblioteca readline
(isto é, entende como voltar para a linha anterior, mover o cursor para a esquerda e para a direita no texto inserido etc.). Pode usar códigos de endereçamento de cursor para otimizar a saída para a tela.
No entanto, espera-se que o cursor esteja no início da linha quando começa e, às vezes, é mais rápido limpar toda a linha ao remover a entrada do que remover os caracteres individuais. Isso é o que está atrapalhando o seu prompt, que move o cursor para a direita sem que o bash saiba disso.
A mesma coisa pode acontecer ao usar escapes de terminal no seu prompt (por exemplo, para definir uma cor ou para definir o título do terminal). Para este propósito, bash
tem saídas especiais para indicar quais bytes não movem o cursor.
Você deve usar read -p 'input: ' -e
, a opção -p
para solicitação é feita especialmente para isso.