我正在创建 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 中)。