在 Bash 脚本中重置历史记录

在 Bash 脚本中重置历史记录

我想制作一个清除历史记录的 bash 脚本,其工作原理与命令类似

history -c

因此我从以下代码开始:-

#!/bin/bash
history     #displaying history
history -c  #clearing history

这些都不起作用。经过一番搜索,我发现 bash 默认在非交互式 shell 中禁用历史记录,但我们可以将其打开。因此,在编辑后,我尝试了以下代码:-

#!/bin/bash
HISTFILE=~/.bash_history   # Or wherever you bash history file lives
set -o history             # enable history
history
history -c

它显示输出:-

[root@localhost lib]# bash a.sh
1  history
[root@localhost lib]#

此外,hisory -c 命令不起作用。因为当我输入 history 时,我仍然会获取命令的历史记录。这意味着历史历史-c在 Bash 脚本中不起作用。

那么我们该如何使用它?

编辑1- 我想删除当前会话的历史记录,它必须存储在某个地方。我尝试使用以下命令,但没有效果:-

cat /dev/null > ~/.bash_history && history -c && exit


cat /dev/null > ~/.bash_history

PS-这不是一个重复的问题。请在将其标记为重复之前尝试理解差异。我想通过脚本清除当前会话的历史记录。我不在乎它是否被写回或其他什么。另一个问题是关于永久删除历史记录。它与脚本或其他终端无关。

答案1

您不能像这样删除历史记录,因为它会删除当前会话的历史记录。

如果你想使用脚本清除历史记录,请在脚本中使用以下命令

> ~/.bash_history

清除所有 bash 历史记录就足够了。

答案2

我觉得

history -c 

只会清除与脚本关联的seesion里面的历史记录此示例:

#!/bin/bash
HISTFILE=~/.bash_history   # Or wherever you bash history file lives
set -o history             # enable history
uname -a > /dev/null
history
history -c
history

显示输出:

....
500  history
501  uname -a > /dev/null
502  history
4  history

这正是我们所期望的。

如果你想删除历史记录,请尝试

> $HISTFILE

相关内容