เชลล์ Unix ส่วนใหญ่อ่านประวัติเก่าจากไฟล์หนึ่งครั้ง - เมื่อเชลล์เริ่ม - และเมื่อคุณปิดเชลล์นั้นประวัติจะถูกเขียนลงในไฟล์อีกครั้ง
โดยปกติแล้วเนื้อหาเก่า ๆ จะถูกเขียนทับดังนั้นถ้าคุณทำอะไรเช่น ...
- เข้าสู่เซสชัน A และ B
- A และ B อ่านเนื้อหาเดียวกันของ
~/.history
- รันคำสั่ง
test
ใน A
- A เป็นการเพิ่ม
test
ลงในประวัติความจำ
- B ไม่รู้เกี่ยวกับคำสั่ง
- ออกจากระบบจาก
- เขียนทับ
~/.history
ด้วยประวัติซึ่งมีtest
- เข้าสู่ระบบเพื่อเซสชั่น C
- C อ่านเนื้อหาของ
~/.history
ด้วยtest
- ออกจากระบบ B
- B เขียนทับ
~/.history
ด้วยประวัติซึ่งไม่มีtest
- ออกจากระบบ C
- C เขียนทับ
~/.history
ด้วยประวัติซึ่งมีtest
จากนั้นtest
จะถูกบันทึกลงในไฟล์ประวัติหลังจากขั้นตอน # 3 แต่ขั้นตอน # 5 จะยกเลิกและขั้นตอน # 6 จะเพิ่มอีกครั้ง ...
เชลล์บางตัวมีตัวเลือก "ผนวกประวัติ" ที่จะหลีกเลี่ยงสิ่งนี้ (เช่นshopt -s histappend
ใน Bash)
หากคุณต้องการมีประวัติที่แยกจากกันอย่างสมบูรณ์เป็นวิธีที่ง่ายคือเพียง symlink /dev/null
แฟ้มประวัติของคุณไป