如何在 Linux 中禁用 bash shell 历史记录
bash shell 将从终端输入的命令保存到历史文件中。您可以调用之前输入的命令列表。history 命令显示您之前执行的 bash 命令。这些命令构成了您的命令历史记录。默认情况下,history 显示最近 500 个命令的编号列表,从最早到最新。HISTSIZE 变量的值用作要保存在历史列表中的命令数。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | Linux shell 脚本 |
操作系统兼容性 | BSD • Linux • macOS • Unix • WSL |
预计阅读时间 | 2 分钟 |
如何显示当前历史记录
只需输入历史命令(可以随意使用grep 命令或 more/less 命令作为分页器):
$ history
$ history | less
$ history | more
$ history | grep 'find'
如何查看历史记录中保存的命令数量
使用 echo 命令或 printf 命令如下:
$ echo "$HISTSIZE"
或者
$ printf "%d\n" $HISTSIZE
这是我所看到的:
1000
HISTSIZE 变量的值表示历史列表中保存的 1000 条命令。
我的 bash 历史命令存储在哪里
历史记录从变量 HISTFILE 命名的文件初始化。默认为 ~/.bash_history 文件。要查看当前设置,请运行:
$ echo "$HISTFILE"
或
$ printf "%s\n" "$HISTFILE"
示例输出:
/home/vivek/.bash_history
如何在 Linux 或 Unix 上禁用 BASH shell 历史记录
您可以通过输入以下 unset 命令来删除 HISTFILE shell 变量:
$ unset HISTFILE
将上述行添加到新的 /etc/profile.d/disable.history.sh 文件(针对系统上的所有用户)或 ~/.bash_profile 的末尾:
$ echo 'unset HISTFILE' >> /etc/profile.d/disable.history.sh
或者针对当前用户:
$ echo 'unset HISTFILE' >> ~/.bash_profile
如何使用 set 命令永久禁用 bash 历史记录
另一个选项是将+o history选项传递给 set 内置命令:
$ set +o history
再次将其添加set +o history到新的 /etc/profile.d/disable.history.sh 文件或 ~/.bash_profile 的末尾。有关更多信息,请参阅如何在 bash 中设置和使用 shell 选项。
如何清除 bash 历史记录
在当前会话中输入以下命令:
$ history -c
要从 Linux/Unix 的历史记录中删除单个命令编号 42:
$ history -d 42
建议使用“-c”选项从内存中清除历史记录列表,然后使用“-w”选项将当前历史记录列表写入历史记录文件。例如:有关更多信息
$ history -c && history -w
,请参阅“ Shell 入门:掌握 Linux、OS X、Unix Shell 环境”和“如何在 Ubuntu Linux 中清除 Shell 历史记录”。
总结
这就是在 Linux 或类 Unix 系统中禁用 bash shell 历史记录功能的方法。有关更多信息,请使用 help 命令或 man 命令查看以下手册页:
$ man bash
$ help history
$ help set
$ help unset
- 如何在 Linux 中禁用 bash shell 历史记录
- 如何从 Linux/Unix Bash shell 的历史记录中删除单个命令
- 在 Ubuntu Linux 中清除 Shell 历史记录
- 清除 Linux / UNIX BASH Shell 命令行缓存 / 历史记录
- Bash History:显示每个命令的日期和时间