我有一个需要一段时间(约 100-200 毫秒)才能生成的 Bash 提示符,因为它包含需要一些时间来计算的 Git 工作树状态。有时,我在命令出现之前就开始输入该命令,但随后该命令会错误地换行。
这是我在终端中看到的内容:
# 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
知道如何防止这种情况吗?
以下是我的 Bash 提示符的设置方式:
# in .bashrc:
PROMPT_COMMAND="PS1=\`/home/username/my-prompt.sh\`"
# in /home/username/my-prompt.sh:
$PROMPT=...
$PROMPT+=...
echo -ne $PROMPT
我相信我在 $PROMPT 中正确设置了所有的\[
和。\]
仅当我在提示出现之前开始输入并且命令换行时,才会出现此问题。
答案1
在生成提示时禁用终端输出可能有效:
PROMPT_COMMAND="PS1=\$(stty -echo)\`/home/username/my-prompt.sh\`\$(stty echo)"
答案2
我建议您使用以下命令将终端设置为理智模式(开玩笑)
stty sane # I hope it'll help and bring back the working of default prompt.