最稳妥的敏感命令防记录方式是从源头不记录:命令前加空格可跳过历史记录(需HIST_IGNORE_SPACE启用,macOS默认开启);也可用HISTORY_IGNORE通配过滤、unset HISTFILE临时关闭、或配置去重选项减少冗余。
mac 默认用 zsh,敏感命令(比如带密码、api密钥、私有路径的 curl 或 ssh 命令)一旦执行,就会原样记进 ~/.zsh_history,别人只要输 history 就能看见。最稳妥的过滤方式不是“删”,而是“从源头不记录”。
命令前加空格跳过记录
这是 zsh 原生支持、零配置、即时生效的方法:
- 在要执行的命令最前面敲一个空格,再回车,例如:
curl -u admin:secret123 https://api.example.com(注意开头有空格) - 该命令不会写入历史文件,也不会出现在
history列表里 - 前提是已启用
HIST_IGNORE_SPACE选项(macOS 默认已开启,无需额外设置)
全局禁用特定命令模式
如果你常执行某类高危命令(如所有含 -p 或 --password 的命令),可用 HISTORY_IGNORE 配置通配过滤:
- 编辑
~/.zshrc,加入一行:export HISTORY_IGNORE='*--password* *-p *curl*pass* *ssh*@*' - 保存后运行
source ~/.zshrc生效 - 注意:该功能要求 zsh ≥ 5.8;macOS 自带 zsh 版本较旧时需先升级(如用 Homebrew 安装最新版)
临时关闭当前会话记录
适合马上要输入密钥、Token 的场景,操作后本窗口所有命令都不存:
- 终端中直接运行:
unset HISTFILE - 退出该终端前,命令不会写入任何历史文件
- 想恢复记录?重启终端或重新设
export HISTFILE=~/.zsh_history
配置自动忽略重复/无意义命令
虽不针对“敏感”,但能减少杂乱命令挤占历史空间,让真正需要审查的内容更少:
- 在
~/.zshrc中添加:setopt HIST_IGNORE_DUPS<br>setopt HIST_IGNORE_ALL_DUPS<br>HISTIGNORE="ls:ll:pwd:cd:clear:history"
- 这样连续执行
ls只留一条,cd ~/Downloads这类高频低信息量命令也不进历史


















