私はUnix&Linuxに初めて触れ、他の質問に対するすでに詳細なアプローチについてコメントしたいと思いました。私の担当者は50歳未満なので(悲しいことに)そうすることはできません。私はこの問題に対する解決策を試しました。複数の端末ウィンドウでbash履歴を保持する
export HISTCONTROL=ignoredups:erasedups # no duplicate entries
export HISTSIZE=100000 # big big history
export HISTFILESIZE=100000 # big big history
shopt -s histappend # append to history, don't overwrite it
# Save and reload the history after each command finishes
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
残念ながら、結果は増加する(マージされた)記録(希望)がありますが、新しいウィンドウで「上向き矢印」(予想なし)を使用してその履歴を循環させることはできません。つまり、新しいウィンドウで実行されるコマンドのみを繰り返すことができます。たとえば、新しい端末を開いて500行の履歴を受け取ると、3つのコマンドを実行し、上矢印を使用してこの501-503のみを循環できます。
新しい端末を開き、次の操作を行います。
$ history #enter
.
.
584 foo
585 bar
.
.
600 baz
$ history #enter
1 history
なぜこれが起こるのか説明できますか?回避策がありますか?ありがとうございます。
答え1
私が投稿したリンクのコメントセクションからソリューションに移動することは可能です。Bash 履歴: 'ignoredups' および 'erasedups' 設定がセッション全体の共通履歴と競合します。
代わりに:
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
使用:
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
答え2
bashに記録があり、記録を書き込むすべての場所について記録があるのは、他のすべてのbashシェルがファイルに書き込んでいる間(history -a)ファイルに書き込むためです。返品同じファイルに書き込みます。
次に、ファイル(history -r)のすべてのコマンドをメモリに読み込みます。
解決策として、(新しい)コマンドをファイル(history -a)に書き込むことができますが、結果ファイルを読み取ることはできません。コマンドリスト記憶の中実行中のすべてのbashインスタンスに属します。 Bashの各インスタンスには異なるコマンドのリストがあります。すべてのコマンドは履歴ファイルに書き込まれます。
使用bashrcまたは同様):
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"