本教程解释了如何在Linux中不留痕迹地删除你的bash历史。
你的bash历史可以用 历史记录命令查看。如果你运行它,所有的用户历史将被显示出来,如下图所示。
history

默认情况下,bash历史记录位于文件 .bash_history 文件中,该文件位于用户的主目录下。 在我的例子中,用户是 linuxhint,要查看历史记录,使用 cat我运行。
cat /home/linuxhint/.bash_history

注意:你可以通过运行下面的命令了解你的历史文件位置。
echo $HISTFILE

在Linux中无痕迹地删除你的历史记录
删除命令行活动历史很简单,有几种方法可以实现。第一种方法是使用 历史记录命令,后面加上 -c(清除)选项,如下面的截图所示。
history -c

你可以看到,在运行 历史记录 -c,如果我们再次运行不带选项的历史记录命令,除了当前的命令外,不会有任何输出。
history

另一个删除bash历史的方法是删除位于用户主目录下的隐藏的 .bash_history文件,该文件位于用户的主目录下。
由于我们想在不留痕迹的情况下删除命令行的历史记录,让我们这样做,使恢复历史文件成为不可能。要做到这一点,我们需要安装 擦拭工具。
要安装 擦拭在基于Debian的Linux发行版上,运行。
sudo apt install wipe

现在wipe被安装了,你可以安全地删除 .bash_history文件,而不必担心它被恢复。
wipe ~/.bash_history

现在你的 .bash_history文件已被完全清除,但当你退出并以同一用户身份重新登录时,将自动再次生成,以记录未来的命令。在本教程的末尾,你会找到防止该文件记录命令的说明。 .bash_history 文件记录命令的说明。
从.bash_history 文件中删除一个特定的行**
让我们假设,像大多数Linux用户一样,你在重复使用 .bash_history 重复命令时,但你想删除一个特定的错误。在某些情况下,一些用户可能会在终端输入密码;这是极不安全的。
在下面的截图中,我们可以看到7条命令。

假设你只想删除第六个命令(擦除.bash_history).要做到这一点,你可以使用history -d 命令,后面跟着你想删除的那一行,如下图所示。
history -d 6

正如你所看到的,该命令被删除了,但你需要用 历史命令,并在后面加上 -w标志,如下图所示。
history -w

现在你想删除的特定行被删除了。
你也可以删除行的范围。下面的例子显示了如何从特定的行开始删除特定数量的行。下面的命令将删除从第40行开始的10行。如果你想删除10行以外的数字,用你想删除的行数替换数字10。将数字40替换为你想让行的范围开始的那一行。
for i in {1..10}; do history -d 40; done

关掉bash历史记录
本教程部分解释了禁用bash历史的不同方法。
如果你想只为当前的shell关闭bash历史记录,运行下面的命令。
set +o history

正如你所看到的,在运行 set+o history后,该命令是最后一条记录,这意味着之后输入的任何命令都不会被记录,包括用于检查结果的 历史记录命令来检查结果。
你可以通过运行下面的命令查看历史记录是否被启用。
set -o | grep history

注意: 你可以通过运行下面的命令来启用bash历史记录回。
set -o history

要永久地禁用bash历史记录,请运行下面的命令,将规则添加到 set +o history到你的 .bashrc 文件中。该 .bashrc文件存储了你的终端会话的配置,包括shell历史,以及其他功能。
echo 'set +o history' >> ~/.bashrc

正如你所看到的,在你的 .bashrc文件的底部,现在你会看到 设置+o历史 规则。
less .bashrc

如下图所示,通过运行.bashrc文件应用这些变化。
sh .bashrc

要禁用整个系统的历史记录,以root权限运行下面的命令,取消设置 HISTFILE变量。
echo 'unset HISTFILE' >> /etc/profile.d/nohistory.sh

注意: 如果你想恢复shell活动历史,你可以删除刚才在 /etc/profile.d.
你也可以为新的或未来的用户禁用bash历史,为现有的用户保留它。要实现这一点,运行下面的命令。
echo 'set +o history' >> /etc/profile

要撤销前面的命令并恢复bash历史记录,你需要把 set+o history中的/etc/profile 文件
nano /etc/profile
删除突出显示的一行(最后一行包含 set+o history命令)。

把它改成

限制bash历史记录的大小
有两个变量限制bash历史记录的大小,HISTSIZE变量。它们之间的区别是HISTSIZE,定义了将被保存在历史记录中的行数,但在你关闭会话后不会保留。
要查看历史记录中保存的行数,即使在你关闭会话后,也可以运行下面的命令。
echo $HISTFILESIZE

正如你所看到的,在关闭并重新登录后,我的历史记录会保留我最后的100条命令。
要改变保存到磁盘的行数,请运行下面的命令。
HISTFILESIZE=50
注意: 50是你想在历史记录中保留的行数,即使在关闭会话之后。用你想要的行数替换它。

正如你所看到的,现在你的历史记录将你最后的50条命令保存在磁盘上。
运行下面的命令,可以看到在同一会话中保存的行数,直到注销为止。
echo $HISTSIZE

如你所见,你的会话历史记录了你最后的500条命令。
要改变$HISTSIZE,请运行。
HISTSIZE=50

现在你的会话将保留你最后的50条命令。
结论
正如你所看到的,删除你的bash历史记录或其中的特定内容是非常容易的,包括对新的Linux用户。当你远程工作并需要保证活动安全时,知道如何删除你的历史记录是特别重要的。在某些情况下,用户可能会在终端上错误地输入密码,留下明智的信息。在某些情况下,一些管理员可能会选择完全禁用这一功能。然而,bash历史记录是一个很好的功能,它可以帮助我们通过按一个键来非常容易地重复命令。