2012-01-27 268 views
48

我注意到,打開.bash_history,它包含了我以前的對話中,僅有條目時,似乎當前會話僅在退出追加。有沒有辦法阻止當前會話保存?如果知道如何做到這一點,即使崩潰bash也是一種選擇。我發現我可以在kill -9的過程中,但是如果有更好的方法我很想知道。當前bash命令不保存歷史

+2

一個駭人的方法來完成這個是使用'kill -9 $$'。通過發送你的終端SIGKILL,它沒有機會寫入歷史文件。 – jordanm 2012-01-28 01:49:27

回答

55

也許比bash的崩潰更優雅是使用history -c命令清除當前會話的歷史記錄。然後,沒有什麼可以保存的(它甚至從歷史中抹去)。

+3

這也將會破壞histfile的內容。 – 2012-01-27 19:49:51

+1

它不適合我。也許它在某個時候改變了?我使用bash 4.2。 – FatalError 2012-01-27 19:52:49

+13

是的,它的核武器的歷史3.2和不4.2 – 2012-01-27 20:05:34

53

取消設置$HISTFILE變量

$ unset HISTFILE 

如果HISTFILE沒有設置,或者如果歷史文件不可寫,歷史將不會保存。
http://www.faqs.org/docs/bashman/bashref_106.html

+0

謝謝,這對Bash版本來說非常好,它可以在-c上刻錄整個歷史。 – dotancohen 2012-01-28 08:29:02

+0

沒有爲我工作 – RSFalcon7 2013-04-12 19:49:32

+0

是什麼這個VS'歷史-r'利益,因爲你會失去一切,你因爲你登錄完成。但有了這個,你會失去所有你是在會話中去做。 – Pylinux 2018-02-12 13:17:07

5

這應該做:

HISTFILE= 

取消設置HISTFILE。

+0

謝謝,這個工作,我會用它爲老年人猛砸一些過時的服務器上。 – dotancohen 2012-01-28 08:28:10

+0

並沒有爲我工作 – RSFalcon7 2013-04-18 17:36:39

+0

您也可以嘗試: 未設置HISTFILE 這肯定是卓有成效的,如果你不希望這個會議的任何事都要在歷史中。否則,請參閱我上面有關HISTCONTROL的評論。 – th3penguinwhisperer 2017-09-01 09:16:21

10

還有另一種選擇,類似於history -c,但不抹任何東西以前到當前會話。

這是history -r,從而重新加載從HISTFILE歷史,就像如果你剛剛登陸,

我不知道這是否正常工作或提供任何慶典版之前的4.3.11,但我儘管將它列入清單會很有用。

這裏是顯示該命令和-c之間的差異的例子:

[email protected]:~$ # I Just logged in 
[email protected]:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one 
4679 2014-08-23 17:15:29 # Previous session 
4680 2014-08-23 17:15:33 # Still the previous session 
4681 2014-08-23 17:15:37 # note the datetime 
4682 2014-08-23 17:15:44 exit 
4683 2014-08-23 17:17:25 # I Just logged in 
4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session 
[email protected]:~$ # This is a secret command, so I need to remove the traces of this session 
[email protected]:~$ history -r 
[email protected]:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
6242 2014-08-23 17:15:29 # Previous session 
6243 2014-08-23 17:15:33 # Still the previous session 
6244 2014-08-23 17:15:37 # note the datetime 
6245 2014-08-23 17:15:44 exit 
6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
[email protected]:~$ history -C# instead if I issue history -c 
[email protected]:~$ history # everything disappears 
5248 2014-08-23 17:23:13 history # everything disappears 
[email protected]:~$ 
+0

在bash 4.3.39上,'history -r'將歷史文件的內容追加到當前歷史列表中。當你發佈你的答案時,無法判斷它是在做什麼......歷史數字在你的命令之間跳來跳去,但是沒有增加一倍。 – user1902689 2015-06-25 03:46:30

+0

你確定它附加了它們嗎?在bash 4.3.11中,數字向前跳躍,因爲計數器沒有被重置,但它實際上並沒有將內容追加到原始數據。事實上,如果您註銷並登錄,數字將回到原始狀態。 – 2015-06-25 08:23:51

4

我下面的作品。

export HISTFILE=/dev/null 

注意,它在它前面的空間。大多數現代發行版不會添加在打開歷史記錄後輸入的命令。這將阻止該行也出現在您的歷史記錄中。

7

我知道這是一個古老的線程。只是想添加此完成:

如果你只是想具體的命令不被保存檢查,如果HISTCONTROL變量設置: HISTCONTROL = ignoreboth 或 HISTCONTROL = ignorespace

與領先開始的每個命令空間不會放在歷史中。

只是我2美分。

+0

非常感謝企鵝! – dotancohen 2014-11-10 13:16:38

+0

這真是一個不錯的選擇! – 2017-06-13 19:48:48