bashシェル記録メカニズムは信頼できませんか?

bashシェル記録メカニズムは信頼できませんか?

Bashプロンプトでの一般的なワークフローには、コマンドを入力してCtrl+R「リテラル」メカニズムを使用して検索することが含まれます。

私は過去数年間、時々コマンドがbashの記録からランダムに消えることを発見しました。

次のコマンドを入力して正常に実行したとします。

$ command A arg1 arg2
$ command B arg3
$ command C arg4

...次にEnterを押しますCtrl+R arg1。たとえば、「failed-reverse-i-search `arg1 '...」エラーが発生します。

興味深いことに、フォローアップを取ると次のようになります。

$ history | less

...command A実際にはレコードではありませんが...レコードにアスタリスクで始まる「列0」行があります。列0は、履歴に書き込まれたコマンドが開始される列の左側の列を意味します。空の確認。

このようなものを見た人はいますか?

これはbash 5.0.3を実行しているdebian / linux stable(buster)にあります。

ベストアンサー1

このようなものを見た人はいますか?

はい。再現するには:

  1. ランニングecho foo
  2. ランニングecho bar
  3. soがecho foo表示されます(またはCtrl+ rfoo、soecho fooが表示され、次の行の最後まで行くには長押しします)。
  4. を長押しすると空白行になり、Backspace実行echo fooされません。
  5. そうですねecho bar
  6. Enterもう一度実行してくださいecho bar

これにより、history期待できる場所に空の項目が印刷されますecho foo*意味として表示されますこのアイテムは編集されました。

revert-all-at-newlinereadline変数を確認してください(注man 3 readline)。

  • 一時設定:bind 'set revert-all-at-newline On'Bashで実行。
  • 新しいBashインスタンスの永続設定:またはset revert-all-at-newline Onに配置されます。/etc/inputrc~/.inputrc

おすすめ記事