我不止一次不小心运行了许多命令并污染了我的 bash 历史记录。如何在不保存我的 bash 历史记录的情况下关闭我的终端?我正在使用 Fedora。
amp*_*ine 36
简短的回答:
在提示符下输入:
$ kill -9 $$
Run Code Online (Sandbox Code Playgroud)
这将立即杀死您的 shell,而 shell 无法执行任何操作,例如捕获信号、保存历史记录、执行~/.bash_logout
、警告停止的作业或任何其他好东西。
长答案:
注意:这些选项并不相互排斥;它们可以同时使用。
选项1:
如果您在处理历史文件时是一个完美主义者,那么您可以做的是修改HISTIGNORE
变量以包含您不想记录的命令团。例如,如果您将HISTIGNORE='ls*:cd*'
和 的~/.bashrc
任何实例添加到您的历史文件中ls
,cd
则不会插入到您的历史文件中。
选项 2:
如果您想逐个命令地控制哪些命令被排除在历史记录之外,您可以设置HISTCONTROL='ignorespace'
which 将省略任何以空格开头的命令行。使用ignoreboth
也会省略重复的行。然后,在输入命令之前按空格键将导致它不会出现在您的历史文件中。
选项 3:
如果您只是想让它在关闭终端时外壳立即退出,您可以trap
通过终端程序发送外壳的信号(xterm
例如发送SIGHUP
然后等待外壳退出)并退出而不保存历史记录接收到这个信号。将此添加到您的~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 31
您的 shell 的历史记录保存在由HISTFILE
变量指示的文件中。所以:
unset HISTFILE
Run Code Online (Sandbox Code Playgroud)
这也适用于 zsh,但不适用于 ksh,ksh 会一直保存到$HISTFILE
shell 启动时指示的文件中(相反,您决定在启动 shell 后将历史记录保存在 ksh 中)。