เพื่อให้เข้าใจถึงพฤติกรรมของประวัติทุบตีก่อนอื่นคุณต้องรู้สิ่งต่อไปนี้:
- มีประวัติในไฟล์ประวัติ
- มีประวัติในหน่วยความจำของกระบวนการทุบตี
- ประวัติในหน่วยความจำของกระบวนการทุบตีหนึ่งไม่ได้ซิงค์กับประวัติในหน่วยความจำของกระบวนการทุบตีอื่น ๆ
- ประวัติในหน่วยความจำของกระบวนการทุบตีจะไม่ได้รับการซิงค์กับประวัติในไฟล์เว้นแต่จะมีการถามอย่างชัดเจนถึงหรือในระหว่างเหตุการณ์บางอย่าง (ดูด้านล่าง)
เมื่อใช้การตั้งค่าเริ่มต้นวงจรชีวิตของเซสชัน bash ที่เกี่ยวข้องกับประวัติจะเป็นดังนี้:
- ในระหว่างการเริ่มต้นทุบตีจะอ่านไฟล์ประวัติ ขณะนี้เนื้อหาของไฟล์ประวัติอยู่ในหน่วยความจำของกระบวนการทุบตี
- ในระหว่างการใช้งานปกติมีการจัดการประวัติในหน่วยความจำเท่านั้น
- ระหว่างการปิดระบบประวัติในหน่วยความจำจะถูกเขียนไปยังไฟล์ประวัติเขียนทับเนื้อหาก่อนหน้าใด ๆ ของไฟล์ประวัติ
พฤติกรรม nondeterministic ที่คุณสังเกตเห็นส่วนใหญ่เป็นเพราะเนื้อหาของไฟล์ประวัติมักจะเป็นประวัติของเซสชั่นทุบตีปิดล่าสุดและทุบตีเท่านั้นอ่านไฟล์ประวัติในระหว่างการเริ่มต้น
อ่านคู่มือทุบตีสำหรับคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับกระบวนการเริ่มต้นและปิดระบบ
โปรดทราบว่าด้วยการตั้งค่าเริ่มต้นฉันหมายถึงการตั้งค่าเริ่มต้นจากการทุบตี การแจกจ่ายของคุณอาจมี.bashrc
(หรือ/etc/bash.bashrc
) ซึ่งเปลี่ยนแปลงพฤติกรรมนี้
ด้วยการเปิดใช้งานตัวเลือกเชลล์histappend
คุณสามารถบอกให้ทุบตีต่อท้ายแทนที่จะเขียนทับไฟล์ประวัติ คุณสามารถเปิดใช้คำสั่งhistappend
shopt -s histappend
หากต้องการให้ตัวเลือกนี้เปิดใช้งานเสมอคุณจะต้องวางคำสั่งไว้ใน.bashrc
(หรือไฟล์เริ่มต้นอื่น ๆ ) อ่านเพิ่มเติมเกี่ยวกับshopt
คำสั่งในคู่มือทุบตี
โปรดทราบว่าการเปิดใช้งานhistappend
จะไม่ลดพฤติกรรมที่ไม่ปรากฏขึ้นของผู้ดูแลระบบมากนัก นี่เป็นเพราะทุกเซสชันทุบตียังคงมีประวัติของตัวเองในหน่วยความจำ เป็นไปได้ที่จะมีประวัติทุบตีเป็นส่วนใหญ่ มีคู่มือวิธีการได้รับกระบวนการทุบตีทุกคนที่จะมีประวัติที่ซิงค์ส่วนใหญ่ในเป็นด้ายล้นสแต็ค
การใช้คำสั่ง builtin history
คุณสามารถบอกให้ bash อ่านประวัติจากไฟล์ไปยังหน่วยความจำหรือเขียนจากหน่วยความจำไปยังไฟล์ได้อย่างชัดเจน ตัวอย่างเช่น: history -r
จะอ่านเนื้อหาของไฟล์และผนวกเข้ากับประวัติในหน่วยความจำ history -w
จะเขียนประวัติปัจจุบันจากหน่วยความจำไปยังไฟล์เขียนทับเนื้อหาก่อนหน้า นี่เป็นสิ่งที่เกิดขึ้นระหว่างการปิดเครื่อง อ่านเพิ่มเติมเกี่ยวกับhistory
คำสั่งในคู่มือทุบตี
เพื่อความสมบูรณ์นี่คือรายการของตัวแปรภายในที่ปรับเปลี่ยนพฤติกรรมประวัติ:
HISTFILE
: ไฟล์ที่จะอ่านและเขียนประวัติถึง
HISTFILESIZE
: จำนวนบรรทัดสูงสุดสำหรับไฟล์ประวัติ
HISTSIZE
: จำนวนบรรทัดสูงสุดสำหรับประวัติในหน่วยความจำ
HISTCONTROL
, HISTIGNORE
, HISTTIMEFORMAT
: ไม่เกี่ยวข้องกับการสนทนานี้ อ่านคู่มือทุบตีเพื่อดูรายละเอียด