Bash

如何在不保存歷史記錄的情況下關閉終端?

  • April 5, 2022

我不止一次不小心執行了許多命令並污染了我的 bash 歷史記錄。如何在不保存 bash 歷史記錄的情況下關閉終端?我正在使用 Fedora。

您的 shell 歷史記錄保存在HISTFILE變數指示的文件中。所以:

unset HISTFILE

這也適用於 zsh,但不適用於 ksh,它會一直保存到$HISTFILEshell 啟動時指示的文件中(相反,您決定在啟動 shell 後將歷史記錄保存在 ksh 中)。

簡短的回答:

在提示符下鍵入:

kill -9 $$

這將立即殺死您的 shell,而 shell 無法執行任何操作,例如擷取信號、保存歷史記錄、執行~/.bash_logout、警告停止的作業或任何其他好東西。

長答案:

注意:這些選項不是相互排斥的;它們可以一次全部使用。

選項1:

如果您在整理歷史文件時是一個完美主義者,那麼您可以做的就是修改HISTIGNORE變數以包含您不想記錄的命令。例如,如果您添加HISTIGNORE='ls*:cd*'到您的~/.bashrcthen 任何實例ls並且cd不會插入到您的歷史文件中。

選項 2:

如果您想逐個命令地控制歷史記錄中遺漏了哪些命令,您可以設置HISTCONTROL='ignorespace'哪些命令將省略任何以空格開頭的命令行。使用ignoreboth也會省略重複的行。然後,在輸入命令之前按空格鍵將導致它不會顯示在您的歷史文件中。

選項 3:

如果你只是想讓它在你關閉終端時shell立即退出,你可以trap終端程序發送shell的信號(xterm例如發送SIGHUP然後等待shell退出)並在不保存歷史記錄的情況下退出接收到這個信號。將此添加到您的~/.bashrc

# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP

引用自:https://unix.stackexchange.com/questions/25049