1. 程式人生 > >Linux隨筆 - linux 多個會話同時執行命令後history記錄不全的解決方案【轉發】

Linux隨筆 - linux 多個會話同時執行命令後history記錄不全的解決方案【轉發】

tap 博文 end -s mef 內容 bin %s 命令

基本認識
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‘
---------------------
作者:Alioo-壞人
來源:CSDN
原文:https://blog.csdn.net/hl_java/article/details/80847488
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

Linux隨筆 - linux 多個會話同時執行命令後history記錄不全的解決方案【轉發】