历史清除shell脚本不起作用

历史清除shell脚本不起作用

我正在创建 shelll 脚本,用于清除终端中的命令历史记录。但该脚本不会清除终端中的命令历史记录。我遵循以下步骤 1. 我的脚本包含以下几行

#!/bin/bash
history -c

2.我将文件改为可执行文件

chmod +x foo.sh

3. 我运行脚本

./foo.sh

但脚本不起作用,也没有删除我的命令历史记录。为什么?

更新:我另外编写了一个脚本来清除历史记录。但仍然出现同样的问题。我的替代脚本是,

#!/bin/bash
# Bash Shell store history in the file ~/.bashrc
rm -r ~/.bash_history

这也是不清楚的命令历史。

答案1

  • rm -f ~/.bash_history(不要使用-r!)将删除历史记录日志,在大多数发行版的默认配置中,当您启动新 shell 时会读取该日志。因此,执行此操作只会影响您在运行此命令后启动的 shell。您可以通过运行将当前 shell 替换为另一个 shell,exec "$SHELL"以避免创建新的终端窗口。
  • history -c清除历史记录当前的shell,并且不会删除~/.bash_history。但是当你跑步脚本当前 shell 创建一个新的shell 中运行脚本退出脚本完成后的 shell。相反,要执行脚本当前的你必须来源脚本。对于您的情况,请尝试运行. foo.sh

答案2

如果您想在退出 shell 后“清除我们的痕迹”,您可能需要从注销脚本(即文件)运行这些命令~/.bash_logout

也许您根本不想保存命令历史记录,在这种情况下您可以设置HISTFILESIZE=0(在您的~/.profile文件中或您正在使用的 shell 中)。

也可以看看:http://ubuntuforums.org/showthread.php?t=920530

相关内容