วิธีการทุบตี (Terminal.app) จะจดจำประวัติการเข้าชมของเซสชันก่อนหน้าได้หรือไม่


11

ในคอมพิวเตอร์ในที่ทำงานเปลือกทุบตีของฉันจดจำประวัติจากเซสชันก่อนหน้าแม้ว่าฉันเพิ่งเปิดเทอร์มินัลใหม่
ในคอมพิวเตอร์ที่บ้านสิ่งนี้ไม่ได้เกิดขึ้น
ผมมีเหมือนกัน OS 10.6.8 ในเครื่องทั้งสองและฉันจะได้ไม่ต้องตั้งค่าใด ๆ .bash_profileในประวัติศาสตร์ที่เกี่ยวข้อง
ฉันจะตั้งค่านี้บนคอมพิวเตอร์ที่บ้านของฉันได้อย่างไร


ถามเพิ่มเติมได้ที่superuser.com/q/421544/4714
เกล็นแจ็

คำตอบที่ดีที่สุด: unix.stackexchange.com/questions/1288/…
mles

คำตอบ:


11

คุณจะต้องบอกตำแหน่งที่เก็บไฟล์ประวัติของคุณและจำนวนบรรทัดที่จะเก็บ:

# Set the location of your HISTFILE
echo "export HISTFILE=/Users/<USERNAME>/.bash_history" >> ~/.bash_profile

# Number of lines to keep (1000 in this example)
echo "export HISTFILESIZE=1000" >> ~/.bash_profile

# Set how many commands to keep in the current session history list
echo "export HISTSIZE=80" >> ~/.bash_profile

# Ignore commands that start with a space
echo "export HISTIGNORE=\"&:[ ]*:exit\"" >> ~/.bash_profile

3
นั่นควรจะไม่จำเป็นโดยปริยาย การกำหนดค่า bash เริ่มต้น (อย่างน้อยใน Mac OS X) เปิดใช้งานประวัติคำสั่ง
Chris หน้า

คำสำคัญ / ควร / หากเขาไม่ได้บันทึกประวัติสิ่งนี้จะบังคับให้ทุบตีเพื่อเก็บประวัติไว้ใน init
Aaron Lake

2
ไม่เพียง แต่ควรแต่จะเว้นแต่สิ่งที่ได้รับการทำเพื่อให้การปราบปรามพฤติกรรมประวัติศาสตร์เริ่มต้นซึ่งในกรณีนี้เพียงแค่กระแทกค่าบางอย่างในตัวแปรเหล่านี้เป็นเพียงการ papering เหนือปัญหาที่เกิดขึ้นจริง หากคำตอบนี้ช่วยแก้ไขปัญหาแสดงว่ามีสิ่งอื่นที่ยุ่งเหยิงและควรแก้ไขเพื่อหลีกเลี่ยงปัญหาอื่น ๆ
Chris Page

คุณสามารถตั้งค่าการตั้งค่าเหล่านี้ แต่ฉันพบวิธีแก้ปัญหา / คำตอบที่ง่ายขึ้นถ้าคุณเพียงต้องการ "เปิดใช้งาน" ประวัติบนเทอร์มินัล มันใช้งานได้ดีสำหรับฉันapple.stackexchange.com/a/220667/243988 (ฉันใช้ macOS High Sierra)
jpruizs

4

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

อย่างไรก็ตามที่บ้าน, Mac Mini (อพยพมาจาก MacBook Pro) ไม่ให้ความร่วมมือแม้หลังจากการตั้งค่าและ.bashrc / หรือ .profileจากนั้นฉันก็ค้นพบว่า~/.bash_historyไฟล์ของฉันถูก root เป็นเจ้าของอย่างลึกลับ ต้องทำเช่นนี้:

sudo -iu root
cd ~(myusername)
chown (myusername) .bash_history

(ใช่ฉันรู้ว่ามันสามารถทำได้ในคำสั่งน้อยลงนิสัย)

จากนั้นฉันออกจากเทอร์มินัลและเริ่มใหม่ Woot! ประวัติศาสตร์ทุกประเภทที่สูญเสียไปก่อนหน้านี้กลับมาอย่างรีบร้อน ช่างดีจริงๆ

ความน่าจะเป็นที่ทุกคนที่อ่านสิ่งนี้ได้ใส่ตัวเองในสถานการณ์นี้โดยไม่ได้ตั้งใจ: 0.2% ฉันแน่ใจว่าฉัน mucked นี้เมื่อ over-zealously "ตรึง" อย่างอื่น


4

ฉันมีปัญหานี้และสิ่งที่ใช้ได้ผลสำหรับฉันคือสร้างไฟล์ชื่อ.bash_sessions_disableในโฟลเดอร์ผู้ใช้ของฉัน ( ~/)

โดยทั่วไป OS X จะสร้างไฟล์ประวัติใน.bash_sessionsโฟลเดอร์สำหรับแต่ละเซสชัน (ในกรณีของฉันหนึ่งไฟล์สำหรับแต่ละแท็บ) และแม้กระทั่งปิดเซสชันเหล่านี้อย่างถูกต้อง OS X จะไม่เล่นย้อนหลัง.bash_historyอีกครั้ง

การสร้าง.bash_sessions_disableคุณปิดการใช้งานพฤติกรรมนี้

touch ~/.bash_sessions_disable

การปิดใช้งานประวัติคำสั่งต่อเซสชัน - พฤติกรรมเริ่มต้น - ตรงกันข้ามกับสิ่งที่ถูกถาม
Chris หน้า

@ChrisPage นั้นถูกต้องก็ต่อเมื่อผู้ถามถามเกี่ยวกับประวัติต่อเซสชันซึ่งดูเหมือนจะไม่เป็นเช่นนั้น ("จดจำประวัติข้ามเซสชัน") การปิดใช้งานพฤติกรรมเซสชัน bash เปิดใช้งานการเล่นซ้ำประวัติครั้งเดียว.bash_historyแทนที่จะเก็บประวัติไว้ใน.bash_sessions/โฟลเดอร์ นี่คือคำตอบที่ถูกต้อง imho
Matt H

@MattH คำถามถามว่าจะให้ประวัติทำงานอีกครั้งได้อย่างไรเพราะมันดูเหมือนจะไม่ทำงานเลยและการปิดใช้งานคุณลักษณะประวัติต่อเซสชันนั้นไม่ได้ไปในทิศทางที่ถูกต้อง หากมีข้อผิดพลาดในกลไกประวัติแต่ละเซสชั่นใครบางคนควรยื่นรายงานข้อผิดพลาด แต่การนำเสนอคำตอบราวกับว่าการปิดมันเป็นเรื่องปกติที่ผู้ใช้ทุกคนจะถูกต้อง ... ไม่ถูกต้อง มันใช้งานได้ปกติ ดูความคิดเห็นของฉันเกี่ยวกับคำตอบที่หลากหลายสำหรับข้อมูลเพิ่มเติม
Chris หน้า

ฉันควรจะพูดถึงเรื่องนี้อีกครั้งเมื่อฉันแสดงความคิดเห็นในตอนแรก: การปิดใช้งานกลไกการบันทึก / คืนค่า bash ทั้งหมดนั้นเป็นวิธีสุดท้ายและควรหลีกเลี่ยงหากเป็นไปได้ คุณสามารถปิดการทำงานประวัติคำสั่งต่อเซสชันโดยการตั้งค่าSHELL_SESSION_HISTORYเป็น 0 ตามที่บันทึก/etc/bashrc_Apple_Terminalไว้
Chris หน้า

1

คำตอบจากกระทู้ Redditนี้ช่วยฉัน:

อาจเป็นไปได้ว่า RVM ป้องกันไม่ให้ "hook" ทางออกสำหรับ bash_sessions ทำงาน หากคุณใส่ความคิดเห็นในบรรทัดต่อไปนี้ใน. bash_profile ของคุณควรทำงานได้

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

0

ฉันมีปัญหาที่คล้ายกันเช่นกันไม่มีการบันทึกประวัติ วิธีแก้ปัญหาที่ระบุไม่ได้ผล แต่ในที่สุดฉันก็พบว่าปัญหานั้นง่ายเหมือนของหาย. bash_history

ทางออกคือไปที่/home/[username]/และเพิ่มไฟล์.bash_historyดังนั้น

nano .bash_history

จากนั้นพิมพ์อะไรก็ได้ในไฟล์ (ไม่เช่นนั้นจะไม่ถูกสร้างขึ้น) ออกและบันทึก หลังจากนี้ประวัติเริ่มทำงานได้ตามปกติ


หากสามารถแก้ไขปัญหาได้แสดงว่ามีสิ่งผิดปกติและควรแก้ไขเพื่อหลีกเลี่ยงปัญหาอื่น หากคุณเริ่มใช้งาน Bash เมื่อไม่มีไฟล์ประวัติไฟล์จะสร้างขึ้นมา ถ้ามันไม่ได้พยายามที่จะสร้างมันขึ้นมาหรือไม่สามารถสร้างมันได้มันมีบางอย่างผิดปกติกับสคริปต์การเริ่มต้นเชลล์บางตัวหรือการอนุญาตจากโฮมไดเร็กตอรี่ ตัวอย่างเช่นดูคำตอบ: apple.stackexchange.com/a/118764/6883
Chris Page
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.