浏览历史记录时保留 Bash 字符

浏览历史记录时保留 Bash 字符

按住k或按住时up,会显示之前输入的命令,但在某些时候,长度超过 10 个字符的命令的前 10 个字符会保留。这并不总是遇到的第一个长度超过 10 个字符的命令,但再次ctrl+c按住up会导致相同的字符保留。

$ echo test
test

$ echo thisisalongstring
thisisalongstring

# pressing `up` twice
$ echo thisiecho test # should be `echo test`
test
# even though `echo thisi` is shown, it is not executed 

有没有办法来解决这个问题?

我没有更改任何内容~/.bashrc(除了附加PS1='test '测试)。

# this is the default ubuntu prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
  • 这种情况在 gnome-terminal 和 konsole 中都会发生。
  • 我尝试附加PS1='test 'PS1=''to ~/.bashrc,其中不包含不可打印的字符,但这种情况仍然发生。
  • 执行PS1=$PS1PS1=$(echo $PS1)不起作用。
  • 手动将上面的代码粘贴到终端中解决了这个问题,但我不知道为什么。
    • $PS1启动终端后回显$PS1与手动粘贴后回显产生相同的结果。
    • 执行会. ~/.bashrc导致提示符恢复为被窃听。

这个问题听起来与已经解决的问题类似为什么当我浏览历史记录时,我的 bash 提示符会出现问题?,但是当 中不存在不可打印字符时也会发生这种情况PS1

答案1

这无需更改即可工作PS1

custom_prompt(){
    # default ubuntu prompt
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
}

PROMPT_COMMAND=custom_prompt

相关内容