清除历史脚本不起作用

清除历史脚本不起作用

我正在创建一个在启动时运行的脚本,该脚本的内容为:

_cleanthehistory ()
{
/bin/echo "cleaning the history"
history -c
}
_cleanthehistory

问题是,这在脚本中不起作用,但如果我从命令行运行它,它就可以工作。有什么想法吗?提前谢谢。Pablo。

答案1

正如我在评论中所说,history -c只会删除当前会话的历史记录,即仅删除脚本运行的命令。要清除包括旧会话在内的所有数据,您必须执行以下操作

rm -f $HOME/.bash_history

答案2

历史记录仅适用于交互式 shell,不适用于脚本。因此,在脚本中,history -c不会有太大用处。如果您只想在启动期间清空用户的 bash 历史记录(就像/tmp在启动期间清空一样),只需截断或删除~/.bash_history

echo "cleaning the history"
> /home/yourusername/.bash_history

这使用 shell 重定向而不使用命令。它使 shell 只打开文件进行写入(如果文件已存在则将其截断),然后关闭文件而不向其中写入任何内容(因为没有命令向其中写入任何内容)。

另外,不要在脚本中使用命令的绝对路径。例如,使用echo,而不是/bin/echo

更新:或者如果您根本不想保存 bash 历史记录,您可以HISTFILE=/dev/null在其中放入类似的内容~/.bashrc

相关内容