关闭终端时如何清除 bash 历史记录?

ori*_*ami 2 linux bash kde terminal konsole

使用 KDE Konsole 作为 bash 终端 我想在关闭终端(选项卡/应用程序)时清除历史记录,请注意,当 Konsole 仍然打开时(以进行搜索),我确实需要 bash 历史记录;我想在终端关闭后将其清除。

我经常长时间使用终端并在关闭终端之前清除历史记录,我正在寻找一种自动清除历史记录的方法。

我发现了一个关于如何清除历史记录或如何禁用它的类似问题,例如如何在不保存历史记录的情况下关闭终端?,但是我发现对我的情况没有任何帮助。这里的区别在于我在终端运行时确实需要历史文件,在运行unset HISTFILE该命令后设置禁用历史文件并且不清除历史文件本身。请注意,会话运行时需要历史文件,但当它关闭时需要清除它。

当终端关闭时,我们如何清除 bash 历史记录?

小智 8

您可以使用.bash_logout文件来指定注销时应执行的命令(参见例如此处了解更多信息)。


Yun*_*nus 6

  1. 擦除 .bash_history

    cat /dev/null > .bash_history
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    >.bash_history
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加一个陷阱 .bashrc

    trap "history  -c" EXIT
    
    Run Code Online (Sandbox Code Playgroud)

  • `cat` 的无用使用。 (2认同)
  • 当有人评论 [无用使用 `cat`](http://porkmail.org/era/unix/award.html#cat) 时,暗示这种评论以某种方式剥夺了人们的权利是一种相当荒谬的回应。 (2认同)

roa*_*ima 6

bash文件(见man bash)包括本关于历史,

Shell 变量以下变量由 Shell 设置:

[...]

HISTFILE保存命令历史的文件的名称 [...]。默认值为~/.bash_history。如果未设置,则在 shell 退出时不会保存命令历史记录。

因此,要在会话期间允许命令历史记录但防止其被保存,只需取消设置此变量即可。您可以在任何或所有.bash_profile,.profile或 中执行此操作.bashrc

unset HISTFILE
Run Code Online (Sandbox Code Playgroud)