我正在创建一个在启动时运行的脚本,该脚本的内容为:
_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
。