หลังจากค้นหาความshopt -s histappend
หมายของสิ่งนี้แล้วดูเหมือนว่าจะเป็นเรื่องที่มีสติมากและฉันก็ประหลาดใจที่มันไม่ได้เป็นค่าเริ่มต้น ทำไมทุกคนต้องการล้างประวัติของพวกเขาในแต่ละการออกจากเปลือก?
หลังจากค้นหาความshopt -s histappend
หมายของสิ่งนี้แล้วดูเหมือนว่าจะเป็นเรื่องที่มีสติมากและฉันก็ประหลาดใจที่มันไม่ได้เป็นค่าเริ่มต้น ทำไมทุกคนต้องการล้างประวัติของพวกเขาในแต่ละการออกจากเปลือก?
คำตอบ:
ทีนี้เมื่อhistappend
ไม่ได้ตั้งค่านี่ไม่ได้หมายความว่าประวัติจะถูกลบในแต่ละการออกจากเชลล์ โดยไม่ต้องhistappend
ทุบตีอ่าน histfile เมื่อเริ่มต้นในหน่วยความจำ - ในระหว่างการดำเนินการรายการใหม่จะถูกเพิ่ม - และเมื่อออกจากเปลือกบรรทัด HISTSIZE ล่าสุดจะถูกเขียนไปยังไฟล์ประวัติโดยไม่ต้องต่อท้ายคือการแทนที่เนื้อหาก่อนหน้า
ตัวอย่างเช่นหาก histfile มี 400 รายการในระหว่างการเพิ่ม bash runtime 10 รายการใหม่ - histsize ถูกตั้งค่าเป็น 500 ดังนั้น histfile ใหม่จะมี 410 รายการ
พฤติกรรมนี้เป็นปัญหาเฉพาะเมื่อคุณใช้อินสแตนซ์ bash มากขึ้นแบบขนาน ในกรณีดังกล่าวไฟล์ประวัติจะมีเนื้อหาของเชลล์ที่มีอยู่เท่านั้น
เป็นอิสระจากสิ่งนี้: มีบางคนที่ต้องการล้างประวัติของพวกเขาเมื่อออกจากเชลล์เนื่องจากเหตุผลความเป็นส่วนตัว
histappend
มีความเกี่ยวข้องกับroot
ประวัติของดิสก์หรือไม่ อีกครั้งก็จะมีผลต่อสิ่งที่ถูกเขียนไม่ถ้า
histappend
เช่นเดียวกับHISTCONTROL=ignoredups:erasedups:ignorespace
ที่ดูเหมือนว่าเริ่มต้นที่ดีสำหรับคนส่วนใหญ่
histappend
ไม่มีความหมายอะไรที่มีประสิทธิภาพถ้าฉันมีHISTFILESIZE=
และHISTSIZE=
ไม่มีที่สิ้นสุดในประวัติศาสตร์?
histappend
ประวัติใหม่จากการรันเชลล์พร้อมกันจะหายไปและจะบันทึกเฉพาะรายการของเชลล์ที่ออกล่าสุดเท่านั้น Btw ผมไม่ทราบว่ามีผลเช่นเดียวกับเชิงลบHISTSIZE=
HISTSIZE
สำหรับความเข้ากันได้ในประวัติศาสตร์ฉันเดา ไม่มีhistappend
ตัวเลือกนี้จนกว่าจะทุบตี 2.0
histappend
ใช่เช่นเดียวกับตอนนี้ถ้าคุณไม่ได้ใช้
bash
'บริสุทธิ์' หรือ.bashrc
distro สำหรับอดีต @Gilles น่าจะถูกต้อง ในความหมายหลัง-s histappend
เป็นค่าเริ่มต้นเช่น Debian ตั้งแต่ปี 2008: bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459