Bashの端末記録を私が望む方法に設定するのに多くの困難があります。重複したエントリがないことを望み、コマンドを入力すると、そのエントリが保存され、上記の重複したエントリが削除されます。
問題は、history
コマンドが私が望む方法で動作していることを示していますが、ログアウトするとすぐに重複エントリが再び表示されることです。私はそれが既存の歴史に歴史を追加することだと思います。私のファイルには次の行があります.bashrc
。
HISTCONTROL=ignoreboth:erasedups
shopt -u histappend
コメントを解除しようとしましたが、ログアウト時に履歴がshopt
追加され続けます。ログアウト前の履歴をそのまま維持するにはどうすればよいですか?
答え1
重複の場合は、erasedups
必要に応じて実行する必要があります。新しいエントリが履歴に追加されると、重複排除がトリガされ、そのコマンドの以前の発生エントリがすべて削除され、最新のコマンドのみが残ります。
質問に答えて」ログアウト前の履歴をそのまま維持するにはどうすればよいですか?」
私の考えでは、これは時々動作するようです。 (そうでない場合は、なぜレコードを使用したいのですか?)発行してこれを実行できます。
history -c; history -r
これにより、現在メモリに保存されているすべての履歴エントリが消去され、履歴ファイルから履歴全体が再度読み取られます。したがって、現在のシェルセッションにログインしてから実行したすべてのコマンドは忘れられます。私は多くのテスト(似たようなコマンドはたくさんありますが、実際には重複しません)を実行し、私の記録が壊れたくない状況で非常に役に立つと思います。だから私は次のようにします.bashrc
。
alias hrr='history -c; history -r'
(hrr
「歴史的再読」として記憶されている)。