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 '
andPS1=''
,~/.bashrc
其中不包含不可列印的字元,但這仍然會發生。執行
PS1=$PS1
或PS1=$(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