ฉันใช้เทอร์มินัล Konsole หลายอัน และฉันต้องการให้คำสั่งทั้งหมดที่ฉันพิมพ์ในทุก ๆ เทอร์มินัลถูกบันทึกไว้ในประวัติคำสั่งดังนั้น konsole ที่ฉันเปิดถัดไปจะมีทั้งหมด เพื่อป้องกันไม่ให้แต่ละเทอร์มินัลเขียนทับคำสั่งประวัติเทอร์มินัลอื่นฉันได้ตั้งค่าต่อไปนี้ใน.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
ฉันให้บรรทัดสุดท้ายเพื่อดูหมายเลขคำสั่งในพรอมต์ของฉัน หมายเลขคำสั่ง ไม่เคยไปเกิน 600 แต่ยังคงคำสั่งเก่าของฉันบางส่วนจะหายไปจากประวัติศาสตร์ มีหลายคำสั่งที่ให้ซ้ำ ๆ แต่ตามที่คาดไว้ignoredups
มันจะไม่เพิ่มคำสั่งในทันที แต่คำสั่งเก่ายังคงหายไปและจำนวนคำสั่งในประวัติศาสตร์จะยังคงอยู่มากกว่า 500 เล็กน้อย
.bash_history
ไฟล์ดังกล่าวยังมีรายการที่ซ้ำซ้อนมากมายแม้จะถูกข้ามไป
PS: ผลลัพธ์ของเสียงสะท้อน$HISTSIZE
และ$HISTFILESIZE
ทั้งคู่=1000
ปรับปรุง: .bashrc
ฉันพบปัญหาในรายการดังกล่าวข้างต้นไป เพียงแค่โทรhistory -a
ในPROMPT_COMMAND
เพียงผนวกคำสั่งใหม่ที่ผ่านมาเพื่อ .bash_history ดังนั้นignoredups
และerasedups
ไม่มีผลกระทบ
มีวิธีใดบ้างฉันยังสามารถเขียนถึง. bash_history โดยไม่ซ้ำกันจากทุกเทอร์มินัล ฉันไม่ต้องการโหลดประวัติทั้งหมดที่แต่ละคำสั่งพร้อมรับคำสั่งhistory -r
และเขียนกลับมาอีกครั้งhistory -w
เพราะคำสั่งที่ฉันใช้ในเทอร์มินัลหนึ่งจะปรากฏในเทอร์มินัลที่ทำงานแบบขนานอื่นเช่นกัน ฉันต้องการให้คำสั่งแบบรวมปรากฏในเทอร์มินัลใหม่เท่านั้น
ปริศนาทำไมประวัติของฉันถึงถูกตัดเหลือ 500 ถูกแก้ไข ฉันสังเกตว่ามันเกิดขึ้นทุกครั้งที่ฉันใส่เครื่องนี้ การสร้าง.bash_profile
รายการต่อไปนี้สามารถแก้ไขปัญหานี้ได้
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
ตอนนี้. bashrc ของฉันจะถูกดำเนินการในแต่ละครั้งที่ฉันมี และขนาดไฟล์ประวัตินั้นเพิ่มขึ้นแบบ monotonically
bug-bash
รายชื่อผู้รับจดหมายหนึ่งปีหลังจากที่โพสต์คำถามนี้: lists.gnu.org/archive/html/bug-bash/2013-07/msg00092.html