O prompt do Bash de geração longa é encerrado incorretamente quando eu começo a digitar

5

Eu tenho um prompt Bash que demora um pouco (~ 100-200ms) para gerar, porque inclui o status da árvore de trabalho Git, que leva algum tempo para ser computado. Às vezes, começo a digitar um comando antes de aparecer, mas o comando é incorreto.

Aqui está o que eu vejo no terminal:

# I start typing:
some command...

# then the prompt appears:
some command...username [branch*] some/directory $ some command...

# then I type some more, causing the command to wrap:
some command...username [branch*] some/directory $ some command...wra
pping text 1

# and when I continue typing, the text overwrites the second line:
some command...username [branch*] some/directory $ some command...wra
wrapping text 2

Alguma ideia de como evitar isso?

Veja como meu prompt do Bash está configurado:

# in .bashrc:
PROMPT_COMMAND="PS1=\'/home/username/my-prompt.sh\'"

# in /home/username/my-prompt.sh:
$PROMPT=...
$PROMPT+=...
echo -ne $PROMPT

Acredito que eu configurei todos os meus \[ e \] s corretamente dentro do $ PROMPT. O problema aparece apenas quando começo a digitar antes que o prompt seja exibido e meu comando é encerrado.

    
por hmp 04.12.2014 / 12:49

2 respostas

4

Pode funcionar para desativar a saída do terminal enquanto o prompt é gerado:

PROMPT_COMMAND="PS1=\$(stty -echo)\'/home/username/my-prompt.sh\'\$(stty echo)"
    
por 04.12.2014 / 14:02
0

Sugiro que você traga seu terminal para o modo sane (brincando) usando

stty sane  # I hope it'll help and bring back the working of default prompt.
    
por 04.12.2014 / 14:34

Tags