ตอบ:
สิ่งที่คุณต้องทำคือกำหนดไว้HISTSIZE
ในโปรไฟล์ทุบตี ( ~/.bash_profile
) คุณสามารถออกจากไม่มีการตั้งค่าHISTFILESIZE
สิ่งนี้จะกำหนดค่าทั้งประวัติในหน่วยความจำและประวัติไฟล์
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
คำอธิบายข้อมูลเพิ่มเติม
ปัญหาคือ HISTFILESIZE ตั้งค่าประวัติสูงสุดที่เก็บไว้ในไฟล์เมื่อคุณเริ่มเซสชันเท่านั้น HISTSIZE คือสิ่งที่กำหนดจำนวนบรรทัดที่บันทึกในตอนท้ายเซสชัน หาก HISTFILESIZE มีขนาดใหญ่กว่า HISTSIZE ของคุณคุณจะไม่เห็น HISTSIZE ของคุณมากกว่าเพราะไฟล์จะถูกเขียนทับด้วยคำสั่ง HISTSIZE ( เว้นแต่คุณจะตั้งค่าประวัติให้ผนวก แต่นั่นคือหัวข้อแยกต่างหาก: ค้นหาhistappend
ในคำสั่ง shell builtinสำหรับที่) .
นี่คือเหตุผลที่คุณไม่เห็นผลใด ๆ ด้วยค่าเริ่มต้นของ HISTSIZE (อาจเป็น 500) ไฟล์ประวัติของคุณจะถูกเขียนทับโดยคำสั่ง $ HISTSIZE ล่าสุด สิ่งใดที่เก่ากว่า (ซึ่งอาจเพิ่มรายชื่อที่ผ่านมา $ HISTSIZE) จะถูกลบออก
สำหรับกรณีส่วนใหญ่ไม่จำเป็นต้องตั้งค่า HISTFILESIZE แยกต่างหากจาก HISTSIZE
HISTSIZE กำหนดจำนวนบรรทัดที่จะเขียนลงในไฟล์ประวัติ รายการคำสั่งจะถูกตัดทอนเมื่อออกก่อนที่จะเขียนไปยังไฟล์ประวัติทำให้ N บรรทัดล่าสุด ตามค่าดีฟอลต์รายการนี้จะเขียนทับไฟล์ประวัติ
HISTFILESIZE กำหนดขนาดไฟล์ประวัติ (เป็นบรรทัด) ไฟล์ถูกตัดทอนเมื่อเริ่มต้นทำให้ไม่มีบรรทัดล่าสุด นอกจากนี้ไฟล์ประวัติอาจถูกตัดทอนเมื่อมีการตั้งค่า HISTFILESIZE
ในที่สุดแม้ว่ามันจะดูเหมือนจะไม่มีเอกสาร BASH ตั้งค่า HISTFILESIZE ตาม HISTSIZE หาก HISTSIZE ถูกตั้งค่าในระหว่างการเริ่มต้น ฉันได้ลองสิ่งนี้ใน macOS และ Ubuntu หลาย ๆ แบบและพฤติกรรมก็สอดคล้องกัน หากคุณตั้ง HISTSIZE ในไฟล์เรียกใช้งาน ( ไม่ผ่านบรรทัดคำสั่งด้วยวิธีการใด ๆ ) HISTFILESIZE จะถูกตั้งค่าให้ตรงกัน (ลองด้วยตัวคุณเอง: ตั้งค่า HISTSIZE เป็นค่าที่มีขนาดใหญ่ตามอำเภอใจใน. bash_profile ออกและเริ่มเทอร์มินัลใหม่จากนั้นecho $HISTSIZE $HISTFILESIZE
คุณจะพบว่ามีค่าตรงกัน)
เป็นผลให้ไม่มีเหตุผลที่จะสัมผัส HISTFILESIZE เว้นแต่ว่าคุณต้องการค่าที่แตกต่างกันและการใช้เคสที่มีค่าที่แตกต่างกันนั้นหายาก (และโดยทั่วไปจะเกี่ยวข้องกับการตั้งค่าการปรับแต่งประวัติเพิ่มเติม