得知这是什么后shopt -s histappend
方法,这似乎是一个非常合理的设置,令我惊讶的是它不是默认设置。为什么有人想要在每次 shell 退出时擦除他们的历史记录?
答案1
好吧,当histappend
未设置时,这并不意味着每次 shell 退出时都会擦除历史记录。如果没有histappend
bash,则在启动时将 histfile 读取到内存中 - 在操作期间添加新条目 - 并且在 shell 退出时,最后的 HISTSIZE 行将写入历史文件而不附加,即替换以前的内容。
例如,如果 histfile 包含 400 个条目,则在 bash 运行时期间添加 10 个新条目 - histsize 设置为 500,则新的 histfile 包含 410 个条目。
仅当您并行使用更多 bash 实例时,此行为才会出现问题。在这种情况下,历史文件仅包含最后退出的 shell 的内容。
与此无关:出于隐私原因,有些人希望在 shell 退出时擦除其历史记录。
答案2
我想是为了历史兼容性。该histappend
选项直到 bash 2.0 才存在。