Bash
如何在不保存歷史記錄的情況下關閉終端?
我不止一次不小心執行了許多命令並污染了我的 bash 歷史記錄。如何在不保存 bash 歷史記錄的情況下關閉終端?我正在使用 Fedora。
您的 shell 歷史記錄保存在
HISTFILE
變數指示的文件中。所以:unset HISTFILE
這也適用於 zsh,但不適用於 ksh,它會一直保存到
$HISTFILE
shell 啟動時指示的文件中(相反,您決定在啟動 shell 後將歷史記錄保存在 ksh 中)。
簡短的回答:
在提示符下鍵入:
kill -9 $$
這將立即殺死您的 shell,而 shell 無法執行任何操作,例如擷取信號、保存歷史記錄、執行
~/.bash_logout
、警告停止的作業或任何其他好東西。長答案:
注意:這些選項不是相互排斥的;它們可以一次全部使用。
選項1:
如果您在整理歷史文件時是一個完美主義者,那麼您可以做的就是修改
HISTIGNORE
變數以包含您不想記錄的命令。例如,如果您添加HISTIGNORE='ls*:cd*'
到您的~/.bashrc
then 任何實例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