มีตัวแปรสองตัวที่ควบคุมขนาดประวัติ:
HISTFILESIZE จำนวนบรรทัดสูงสุดที่มีอยู่ในไฟล์ประวัติ เมื่อตัวแปรนี้ถูกกำหนดค่าไฟล์ประวัติจะถูกตัดทอนหากจำเป็นเพื่อให้มีจำนวนบรรทัดไม่เกินจำนวนนั้นโดยการลบรายการที่เก่าที่สุด ไฟล์ประวัติจะถูกปัดเศษเป็นขนาดนี้หลังจากเขียนเมื่อเชลล์ออก หากค่าเป็น 0 ไฟล์ประวัติจะถูกปัดเศษเป็นขนาดศูนย์ ค่าที่ไม่ใช่ตัวเลขและค่าตัวเลขน้อยกว่าศูนย์ยับยั้งการตัด เชลล์ตั้งค่าเริ่มต้นเป็นค่า HISTSIZE หลังจากอ่านไฟล์เริ่มต้นใด ๆ
และ
HISTSIZE จำนวนคำสั่งที่ต้องจดจำในประวัติคำสั่ง (ดูประวัติด้านล่าง) หากค่าเป็น 0 คำสั่งจะไม่ถูกบันทึกในรายการประวัติ ค่าตัวเลขน้อยกว่าศูนย์ส่งผลให้ทุกคำสั่งถูกบันทึกไว้ในรายการประวัติ (ไม่ จำกัด ) เชลล์ตั้งค่าเริ่มต้นเป็น 500 หลังจากอ่านไฟล์เริ่มต้นใด ๆ
ตัวแปรทั้งสองนี้ช่วยให้คุณสามารถควบคุมพฤติกรรมของประวัติของคุณได้ โดยทั่วไปHISTSIZE
คือจำนวนคำสั่งที่บันทึกระหว่างเซสชันปัจจุบันของคุณและHISTFILESIZE
เป็นจำนวนคำสั่งที่จะถูกจดจำข้ามเซสชัน ตัวอย่างเช่น:
$ echo $HISTSIZE
10
$ echo $HISTFILESIZE
5
$ history | wc
10 29 173
ในตัวอย่างข้างต้นเนื่องจากHISTSIZE
ตั้งค่าเป็น 10 history
จะส่งคืนรายการคำสั่ง 10 รายการ อย่างไรก็ตามหากคุณออกจากระบบแล้วกลับเข้าสู่ระบบhistory
จะส่งกลับเพียง 5 คำสั่งเพราะHISTFILESIZE
ตั้งไว้ที่ 5 เนื่องจากเมื่อคุณออกจากเซสชันHISTFILESIZE
ของคุณประวัติของคุณจะถูกบันทึกลงในไฟล์ประวัติของคุณ ( ~/.bash_history
โดยค่าเริ่มต้น แต่ควบคุมโดยHISTFILE
) กล่าวอีกนัยหนึ่งคำสั่งจะถูกเพิ่มเข้าไปHISTFILE
จนกว่าจะถึง$HISTFILESIZE
บรรทัดที่จุดแต่ละบรรทัดต่อมาเพิ่มหมายถึงคำสั่งแรกของไฟล์จะถูกลบออก
คุณสามารถกำหนดค่าของตัวแปรเหล่านี้ใน~/.profile
(หรือ~/.bash_profile
ถ้าไฟล์นั้นมีอยู่) ไม่ได้ตั้งค่าไว้ในคุณ~/.bashrc
ครั้งแรกเพราะพวกเขามีธุรกิจไม่ถูกตั้งอยู่ที่นั่นและประการที่สองเพราะที่จะทำให้คุณมีพฤติกรรมที่แตกต่างกันในการเข้าสู่ระบบเทียบกับเปลือกหอยที่ไม่ได้เข้าสู่ระบบซึ่งสามารถนำไปสู่ปัญหาอื่น ๆ
ตัวแปรที่มีประโยชน์อื่น ๆ ที่ช่วยให้คุณปรับพฤติกรรมของประวัติของคุณได้ดีคือ:
HISTIGNORE
: สิ่งนี้ช่วยให้คุณสามารถละเว้นคำสั่งทั่วไปบางอย่างที่ไม่ค่อยสนใจ ตัวอย่างเช่นคุณสามารถตั้งค่า:
export HISTIGNORE="pwd:df:du"
ที่จะทำให้เกิดคำสั่งใด ๆ ที่เริ่มต้นด้วยpwd
, df
หรือdu
ที่จะละเลยและไม่ได้บันทึกไว้ในประวัติของคุณ
HISTCONTROL
: อันนี้ให้คุณเลือกวิธีการทำงานของประวัติ ส่วนตัวผมตั้งไว้HISTCONTROL=ignoredups
ที่ทำให้บันทึกคำสั่งซ้ำเพียงครั้งเดียว ตัวเลือกอื่น ๆ คือignorespace
การละเว้นคำสั่งที่ขึ้นต้นด้วยช่องว่างและerasedups
ทำให้บรรทัดก่อนหน้าทั้งหมดตรงกับบรรทัดปัจจุบันจะถูกลบออกจากรายการประวัติก่อนที่จะบันทึกบรรทัดนั้น ignoreboth
จดชวเลขสำหรับการเพิกเฉยและการเพิกเฉย
HISTTIMEFORMAT
: ใช้สำหรับกำหนดรูปแบบเวลาของไฟล์ประวัติ ดูคำตอบของ Pandya หรืออ่านman bash
รายละเอียด
สำหรับการปรับจูนเพิ่มเติมคุณมี:
histappend
ตัวเลือกทุบตี สิ่งนี้สามารถตั้งค่าได้โดยการเรียกใช้shopt -s histappend
หรือเพิ่มคำสั่ง~/.bashrc
นั้นใน หากตั้งค่าตัวเลือกนี้
รายการประวัติจะถูกผนวกเข้ากับไฟล์ที่ตั้งชื่อโดยค่าของตัวแปร HISTFILE เมื่อเชลล์ออกจากแทนที่จะเขียนทับไฟล์
สิ่งนี้มีประโยชน์มากเพราะช่วยให้คุณสามารถรวมประวัติของเซสชันต่างๆ (คิดว่าเทอร์มินัลต่างกันเป็นต้น)
history
คำสั่งมีสองตัวเลือกที่มีประโยชน์:
ตัวอย่างเช่นคุณสามารถเพิ่มคำสั่งทั้งสองนี้ไปยังของคุณPROMPT_COMMAND
(ซึ่งจะถูกดำเนินการในแต่ละครั้งที่เชลล์แสดงพรอมต์ดังนั้นเมื่อใดก็ตามที่คุณเริ่มเชลล์ใหม่และหลังจากแต่ละคำสั่งที่คุณรันอยู่):
export PROMPT_COMMAND='history -a;history -r;'
เมื่อรวมเข้าด้วยกันพวกเขาจะมั่นใจได้ว่าเทอร์มินัลใหม่ที่คุณเปิดจะนำเข้าประวัติของเชลล์เซสชั่นอื่น ๆ ทันที ผลลัพธ์คือประวัติทั่วไปของเทอร์มินัล / เชลล์ทุกเซสชัน