検索履歴に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=''~/.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

おすすめ記事