按住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=$PS1
或PS1=$(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