ประวัติศาสตร์ที่ถูกจารึกไว้


15

ในโหมด gui เมื่อผู้ใช้เปิดมากกว่าหนึ่งเทอร์มินัลเทอร์มินัลจะเขียนไฟล์ประวัติของผู้ใช้รายนั้นอย่างไร เหตุผลที่ฉันถามคือเพราะมันเป็นไปได้ค่อนข้างที่ในแต่ละอาคารที่ผู้ใช้จะดำเนินการคำสั่งที่แตกต่างกัน ดังนั้นไฟล์ประวัติจะสิ้นสุดการบันทึกคำสั่งจากเทอร์มินัลทั้งหมดหรือเฉพาะจากไฟล์แรกที่จะเปิดหรือไม่ หรือมีรูปแบบอื่น ๆ ที่ใช้เพื่อแก้ไขสถานการณ์นี้

คำตอบ:


11

ขึ้นอยู่กับว่าเชลล์เลือกที่จะจัดการกับมันอย่างไร

bashโดยค่าเริ่มต้นจะเขียนทับไฟล์ประวัติด้วยประวัติโลคัลของแต่ละเชลล์ขณะที่มันออกดังนั้นเชลล์สุดท้ายที่จะออกจากการชนะ histappendตัวเลือกที่จะทำให้มันผนวกกับประวัติศาสตร์ต้นแบบแทน ( shopt -s histappend)

zsh ทำเช่นเดียวกันโดยค่าเริ่มต้นและมีตัวเลือกน้อยสำหรับการจัดการกับมัน:

  • appendhistory - ประวัติของแต่ละเชลล์จะถูกผนวกเข้ากับไฟล์ประวัติหลักเมื่อเชลล์ออก
  • incappendhistory - ไฟล์ประวัติต้นแบบถูกอัพเดตทุกครั้งที่มีการเรียกใช้งานบรรทัดในเชลล์ใด ๆ แทนที่จะรอจนกว่าเชลล์นั้นจะออก
  • sharehistory- กดไลค์incappendhistoryแต่ยังดึงการเปลี่ยนแปลงจากไฟล์ประวัติหลักไปยังเชลล์ที่รันอยู่ทั้งหมดดังนั้นคุณสามารถเรียกใช้คำสั่งในเชลล์หนึ่งจากนั้นกดUpเชลล์อีกเชลล์แล้วดู

ตอนนี้บอกฉันถึงวิธีการทำเช่นนั้นใน Bash โปรด;)
tante

1
@tante ใช้งานไม่shopt -s histappendได้?
Michael Mrozek

0

ฉันได้รับแนวคิดนี้จากหนังสือ "Unix Power Tools" ของ O'Reilly

ใน.profileชุดของฉัน:

export HISTFILE=$HOME/.sh_hist.$$

ทุกครั้งที่ฉัน.profileได้รับการอ่านฉันจะได้รับไฟล์ประวัติใหม่ชื่อ PID ของเซสชั่นของฉัน หากฉันมีการเข้าสู่ระบบหลายครั้งการเข้าสู่ระบบแต่ละครั้งจะได้รับไฟล์ประวัติที่ไม่ซ้ำกัน ทำงานในและkshbash

หากคุณเพิ่งเปิดเทอร์มินัลใหม่ในเซสชัน X โดยปกติแล้วพวกเขาจะไม่ได้เป็นเชลล์การเข้าสู่ระบบ แต่คุณสามารถกำหนดค่าให้พวกเขาทำหน้าที่เป็นเชลล์การเข้าสู่ระบบ ตัวอย่างเช่นrxvt +lsจะเริ่มrxvtเป็นเปลือกเข้าสู่ระบบ ตรวจสอบเอกสารสำหรับเทอร์มินัลที่คุณใช้อยู่

นอกจากนี้หากคุณไม่ได้ใช้.logoutหรือ.bash_logoutไฟล์ (หรือวิธีอื่น) ในการทำความสะอาดในที่สุดคุณก็จะมี.sh_histไฟล์จำนวนมาก


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.