控制 Bash 历史记录的 6 个场景

💡 原文中文,约2700字,阅读约需7分钟。
📝

内容提要

本文介绍了控制 Bash 历史记录的六种方法,包括不记录未执行命令、删除已执行命令、避免命令刷屏、设置特定命令不记录、整个会话不留痕迹以及清空历史文件。通过设置环境变量如 HISTCONTROL 和 HISTIGNORE,可以有效管理历史记录,保护敏感信息。

🎯

关键要点

  • Bash 默认将所有输入的命令记录在 ~/.bash_history 文件中,可能会泄露敏感信息。
  • 可以通过设置环境变量 HISTCONTROL 和 HISTIGNORE 来控制 Bash 历史记录。
  • 场景一:在命令前加空格可以避免未执行命令被记录,前提是 HISTCONTROL 包含 ignorespace。
  • 场景二:使用 history -d 命令可以删除已执行命令,但需注意删除只在内存中生效,需使用 history -w 覆写磁盘文件。
  • 场景三:设置 HISTCONTROL=ignoredups 可以避免重复命令记录,结合 ignorespace 使用可更有效。
  • 场景四:使用 HISTIGNORE 定义模式,可以让某类命令不被记录,需谨慎设置以免忽略重要命令。
  • 场景五:通过设置 HISTFILE=/dev/null 可以使整个会话不记录到磁盘,内存中的历史在会话结束时消失。
  • 场景六:使用 history -c && history -w 可以清空历史记录,确保内存和磁盘中的历史都被清除。

延伸问答

如何避免未执行的命令被记录在 Bash 历史中?

在命令前加一个空格,并确保 HISTCONTROL 包含 ignorespace。

如何删除已执行的命令?

使用 history -d 命令删除指定行号的命令,然后用 history -w 覆写磁盘文件。

如何避免 Bash 历史中记录重复的命令?

设置 HISTCONTROL=ignoredups,可以避免重复命令被记录。

如何设置某类命令不被记录?

使用 HISTIGNORE 定义模式,匹配的命令将不会进入历史列表。

如何使整个 Bash 会话不记录到磁盘?

设置 HISTFILE=/dev/null,这样会话结束时不会写入磁盘。

如何清空 Bash 历史记录?

执行 history -c 清空内存中的历史,然后用 history -w 覆写到磁盘。

➡️

继续阅读