我有多個 PuTTy 會話向我的 SunOS 5.10 伺服器打開,並且我使用 ksh,有時命令歷史記錄在不同會話之間共享,有時則不然。我無法弄清楚是什麼決定了它是否共享。我所說的共享是指在一個會話中運行的命令將被視為在另一個會話中運行的上一個命令。
我不希望它被共享,有相關的配置設定嗎?
答案1
大多數 Unix shell 都會從檔案中讀取一次舊歷史記錄(當 shell 啟動時),當您關閉該 shell 時,歷史記錄會再次寫入檔案。
通常舊的內容會被簡單地覆蓋,所以如果你做類似的事情...
- 登入會話 A 和 B
- A和B讀到的內容相同
~/.history
- A和B讀到的內容相同
test
在A中 運行命令- A 新增了
test
它的記憶體歷史記錄 - B 不知道該指令
- A 新增了
- 從A註銷
- A 會覆蓋
~/.history
其歷史記錄,test
- A 會覆蓋
- 登入會話C
- C 讀取
~/.history
,的內容test
- C 讀取
- 從 B 註銷
- B
~/.history
用它的歷史覆蓋,它沒有test
- B
- 從 C 註銷
- C
~/.history
用它的歷史覆蓋,test
- C
然後test
將在步驟#3之後保存到歷史文件中,但步驟#5將丟棄它,步驟#6將再次添加它...
有些 shell 有一個「附加歷史記錄」選項可以避免這種情況(例如shopt -s histappend
在 Bash 中)。
如果您想要擁有完全獨立的歷史記錄,一個簡單的方法是將您的歷史文件符號連結到/dev/null
.