Bash

瀏覽歷史記錄時留下的 Bash 字元

  • October 1, 2019

按住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 'and PS1=''~/.bashrc其中不包含不可列印的字元,但這仍然會發生。

  • 執行PS1=$PS1PS1=$(echo $PS1)不起作用。

  • 將上面的程式碼手動粘貼到終端可以解決這個問題,但我不知道為什麼。

    • 啟動終端后回顯與手動粘貼後$PS1回顯產生相同的結果。$PS1
    • 執行. ~/.bashrc會導致提示恢復為被竊聽。

這個問題聽起來類似於已經解決的為什麼當我瀏覽歷史記錄時我的 bash 提示被竊聽?,但是當 . 中沒有不可列印的字元時也會發生這種情況PS1

這在不改變的情況下工作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

引用自:https://unix.stackexchange.com/questions/542906