
我在一些 Unix 伺服器上遇到這個問題。當我為同一用戶開啟不同的會話時,命令歷史記錄由所有會話共用。如果我錯誤地按Ctrl-P
或up arrow
併只按 Enter,這會產生問題。有一次,我最終幸運地運行了rm -rf *
,因為我所在的目錄沒有刪除檔案的權限。
如何為同一使用者的不同會話擁有單獨的命令歷史記錄?大多數時候我使用 ksh 和 tcsh shell。
答案1
您可以新增HISTFILE=~/.hist$$
到您的.profile
.這應該為每個會話產生一個唯一的檔案。
你最終會得到大量的,.hist*
所以我建議你偶爾刪除它們。
答案2
來自常見問題解答:
Q1.如何取得 shell 的單獨歷史檔案?
A1。 ksh 對所有使用相同歷史檔案名稱的 shell 使用共用歷史檔案。這意味著在一個視窗中輸入的命令將被其他視窗中的 shell 看到。要獲得單獨的窗口,需要在建立第一個歷史命令之前將 HISTFILE 變數設定為不同的名稱。
答案3
我假設您正在談論同時會話;將一個接一個的會話分開並不是很有用:您將永遠無法再使用它的歷史記錄,因為所有會話都是唯一的。如果是這種情況,您最好停用命令歷史記錄。
如果我們談論分離同時會話,我建議您使用 Bash。我很確定我沒有從與之混合的兩個同時會話中獲取命令歷史記錄。 Bash 僅在登出時寫入歷史記錄.bash_history
,因此命令歷史記錄在登出後才會混合。如果使用 Bash 是可以接受的,這能解決您的問題嗎?
答案4
你可以使用螢幕。我還做了一個由我的 konsole 設定檔定義的變量,並為每個會話提供了不同的歷史文件,只有我能想到的方法。