ไม่สามารถเพิ่มความยาวประวัติเปลือก bash ของ Mac OSX ได้


26

ฉันตั้งค่า ~ / .bash_profile บางครั้งที่ผ่านมาจะมีความยาวมากกว่า 500 บรรทัด แต่ดูเหมือนว่าระบบจะไม่สามารถจับสิ่งนี้ได้

คุณรู้ไหมว่าทำไม?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500

คำตอบ:


34

HISTSIZE=10000000นอกจากนี้คุณยังจะต้องตั้ง

HISTFILESIZEกำหนดจำนวนบรรทัดที่จะเก็บไว้ในไฟล์ประวัติในขณะที่HISTSIZEกำหนดจำนวนบรรทัดที่จะเก็บไว้ในหน่วยความจำ ทั้งค่าเริ่มต้นเป็น500

ดำเนินการecho $HISTFILESIZE $HISTSIZEก่อนที่คุณจะทำการเปลี่ยนแปลงและอีกครั้งหลังจากนั้น คุณควรเห็น10000000 500ครั้งแรก10000000 10000000หลังจากนั้น


16

คุณต้องส่งออก HISTSIZEและHISTFILESIZEตัวแปรสภาพแวดล้อมใน~/.bash_profileไฟล์ของคุณ

เพิ่มบรรทัดต่อไปนี้ในของคุณ~/.bash_profile:

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

9

ตอบ:

สิ่งที่คุณต้องทำคือกำหนดไว้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 เว้นแต่ว่าคุณต้องการค่าที่แตกต่างกันและการใช้เคสที่มีค่าที่แตกต่างกันนั้นหายาก (และโดยทั่วไปจะเกี่ยวข้องกับการตั้งค่าการปรับแต่งประวัติเพิ่มเติม


คุณถูกต้องซิม ซอร์สโค้ด Bash แสดงว่ามันจะตั้งค่า HISTFILESIZE เป็น HISTSIZE หาก HISTFILESIZE ไม่ได้ถูกตั้งค่าไว้ git.savannah.gnu.org/cgit/bash.git/tree/…
robert
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.