ฉันจะทำให้ Terminal เก็บประวัติแยกกันต่อแท็บ / หน้าต่างได้อย่างไร


13

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

ฉันสมมติว่าเป็นเพราะทุบตีใช้เหมือนกัน~/.bash_historyสำหรับเทอร์มินัลทั้งหมด แต่มีวิธีหลีกเลี่ยงการปรับปรุงนี้หรือไม่? หากต้องการทุบตีหรือเทอร์มินัลให้จัดเก็บแยกต่างหาก


โปรดดูโพสต์นี้ @ ข้อผิดพลาดเซิร์ฟเวอร์มันอธิบายวิธีการทำเช่นนี้
Mutant

คำตอบ:


7

คุณสามารถทำสิ่งนี้ในของคุณ.bashrc:

MYTTY=`tty`
HISTFILE=$HOME/.bash_history_`basename $MYTTY`

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


เยี่ยมมากขอบคุณ! ทำเครื่องหมายว่าแก้ไขแล้ว แม้ว่ามันจะขึ้นอยู่กับว่า OSX จะทำการโหลดเทอร์มินัลได้อย่างไรฉันรู้สึกว่านี่เป็นสิ่งที่ใกล้เคียงที่สุดที่เราจะได้รับ
Robert Sköld

เป็นไปได้ไหมต่อแท็บ
Joshua Muheim

แต่ละแท็บคือการลงชื่อเข้าใช้แบบ tty แยกต่างหากดังนั้นจึงควรใช้งานได้
เซ ธ โนเบิล

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

@ChrisPage ปัญหานี้คือเซสชันจะแตกต่างกันทุกครั้งที่คุณเรียกใช้หน้าต่าง / แท็บ ดังนั้นมันจะสร้างประวัติศาสตร์ที่แยกจากกันและไม่เชื่อมโยงพวกเขาข้ามเซสชัน
Rene Wooller

5

ฉันใช้สิ่งนี้โดยการเพิ่ม

export HISTFILE="$HOME/.bash_history_$TERM_SESSION_ID"
if [ ! -e $HISTFILE ]; then cp "$HOME/.bash_history" "$HISTFILE"; fi

ไปที่~/.bash_profileไฟล์ของฉัน ตอนนี้เมื่อฉันปิดเทอร์มินัลแล้วเปิดอีกครั้งแต่ละแท็บจะมีการเรียกคืนประวัติคำสั่งแยกต่างหาก นอกจากนี้เมื่อฉันสร้างแท็บใหม่ประวัติเริ่มต้นจะเริ่มต้นจาก.bash_history

นอกจากนี้ยังจะทำให้Terminalแอปเพื่อรักษาแท็บเปิดระหว่างปิดและเริ่มต้นคุณจะต้องตรวจสอบให้แน่ใจว่าตัวเลือกอยู่ในคนพิการ"close windows when quitting app" (on Yosemite)System Preferences -> General


0

คุณสามารถตั้งค่า $ HISTFILE ที่กำหนดเองสำหรับแต่ละอินสแตนซ์ของ Terminal ได้


มีวิธีการทำเช่นนี้โดยอัตโนมัติสำหรับแต่ละแท็บ / หน้าต่างของเทอร์มินัลหรือไม่? และตรวจสอบให้แน่ใจว่ามันใช้งานเหมือนกัน$HISTFILEเมื่อคอมพิวเตอร์เริ่มสำรอง?
Robert Sköld

1
ใช่เป็นไปได้ที่จะทำเช่นนี้ แต่แล้วคุณจะเข้าถึงอีกครั้งได้อย่างไร คุณต้องเล่นกลไฟล์ด้วยตนเองเพื่อไปยังไฟล์ประวัติก่อนหน้า
EmmEff

@EmmEff Terminal มีการรองรับการทำงานประเภทนี้อย่างชัดเจน: เมื่อสร้างเทอร์มินัลใหม่จะกำหนด ID เฉพาะให้กับเครื่องปลายทางและสื่อสารกับเทอร์มินัลเซสชันผ่านตัวแปรสภาพแวดล้อม TERM_SESSION_ID เมื่อคืนค่าเทอร์มินัลสำหรับการดำเนินการต่อจะเรียกคืนเซสชั่น ID เดียวกันเพื่อให้โปรแกรมสามารถใช้สิ่งนี้เพื่อเชื่อมโยงสถานะโดยพลการกับเทอร์มินัลที่กู้คืน
Chris หน้า
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.