linux 多個會話同時執行命令後history記錄不全的解決方案

基本認識

linux默認配置是當打開一個shell終端後,執行的所有命令均不會寫入到~/.bash_history文件中,只有當前用戶退出後纔會寫入,這期間發生的所有命令其它終端是感知不到的。

問題場景

那麼問題來了,假若之前history命令記錄爲c0,用戶先打開了shell終端a,執行了一部分命令c1,又打開了一個shell終端b,又執行了一部分命令c2.
問題1.終端a執行的這部分命令終端b上看不到。
問題2.終端a正常退出,相關命令會寫入到~/.bash_history文件中(c1命令也會寫入,即c0+c1),等到終端b正常退出後,相關命令也會寫入到~/.bash_history文件中,注意這個時候終端b寫入的內容爲c0+c2,也即c1記錄會丟失!!!

解決方案

將下面這段內容添加到~/.bashrc 並執行 . ~/.bashrc即可

# format history 
# save in ~/.bashrc
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` 

export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  `whoami`@${USER_IP}: "
export HISTFILESIZE=1000000
export PROMPT_COMMAND="history -a; history -r;  $PROMPT_COMMAND"
shopt -s histappend
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章