これが何であるかを知ったらshopt -s histappend
方法、これは非常に合理的な設定のようで、デフォルトではないという事実に驚きました。シェルが終了するたびに、なぜ自分の記録を消去したいのですか?
答え1
まあ、histappend
設定しなかったとしても、シェルが終了するたびに記録が消去されるわけではありません。 Bashが存在しない場合は、histappend
起動時にhistfileがメモリに読み込まれ(操作中に新しいエントリが追加されます)、シェルが終了すると最後のHISTSIZE行は追加されず(古いコンテンツの置き換えなど)、履歴ファイルに書き込まれます。
たとえば、histfileに400個のエントリが含まれていて、bashランタイム中に10個の新しいエントリが追加された場合(histsizeが500に設定されている場合)、新しいhistfileには410個のエントリが含まれます。
この動作は、より多くのbashインスタンスを並列に使用する場合にのみ問題になります。この場合、履歴ファイルには終了する最後のシェルの内容のみが含まれます。
関連なし:プライバシーのために、一部の人々はシェルが終了したときにシェル履歴を消去したいと考えています。
答え2
歴史的互換性のために推測します。このhistappend
オプションはbash 2.0までは存在しませんでした。