पिछले सत्रों के इतिहास को याद रखने के लिए बैश (टर्मिनल.एप्प) कैसे बनाएं?


11

काम पर मेरे कंप्यूटर में, मेरा बैश शेल पिछले सत्रों से इतिहास को याद करता है, भले ही मैंने अभी नया टर्मिनल खोला हो।
मेरे कंप्यूटर में घर पर, ऐसा नहीं होता है।
मेरे पास दोनों मशीनों में समान OS 10.6.8 है और मेरे पास कोई भी इतिहास संबंधित सेटिंग नहीं है .bash_profile
मैं इसे अपने घरेलू कंप्यूटर पर कैसे सेट कर सकता हूं ताकि यह पूरे सत्र के इतिहास को याद रखे?



सबसे अच्छा जवाब: 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
यह सब डिफ़ॉल्ट रूप से अनावश्यक होना चाहिए। डिफ़ॉल्ट बैश कॉन्फ़िगरेशन (कम से कम मैक ओएस एक्स पर) कमांड इतिहास को सक्षम करता है।
क्रिस पेज

कुंजी शब्द, / चाहिए /। यदि उसका इतिहास दर्ज नहीं किया गया है, तो यह इतिहास को निष्क्रिय रखने के लिए बाध्य करेगा।
एरोन लेक

2
न केवल चाहिए , लेकिन इच्छा जब तक कुछ डिफ़ॉल्ट इतिहास व्यवहार, जिस स्थिति में, बस इन चर में कुछ मान बंद कर केवल वास्तविक समस्या से अधिक papering है को दबाने के लिए किया गया है। यदि यह उत्तर समस्या को हल करता है, तो वास्तव में कुछ और गड़बड़ है और अन्य मुद्दों से बचने के लिए इसे ठीक किया जाना चाहिए।
क्रिस पेज

आप इन सेटिंग्स को सेट कर सकते हैं, लेकिन मुझे एक सरल समाधान / उत्तर मिला यदि आप टर्मिनल पर इतिहास को "सक्षम" करना चाहते हैं। यह सिर्फ मेरे लिए ठीक काम किया Apple.stackexchange.com/a/220667/243988 (मैं macOS हाई सिएरा का उपयोग कर रहा हूँ)
jpruizs

4

मुझे बस पता चला कि मुझे एक समान समस्या थी, हालांकि मेरे नियोक्ता के पास केवल दो मैक हैं, और न ही मेरे डेस्क पर बैठता है । अस्वीकार्य, लेकिन एक और समय के लिए लड़ाई।

वैसे भी, घर पर, मैक मिनी (मैकबुक प्रो से स्थानांतरित) ने सेटिंग .bashrcऔर / या के बाद भी सहयोग नहीं किया .profile। तब मुझे पता चला कि मेरी ~/.bash_historyफाइल रहस्यमय तरीके से रूट की थी। यह करना पड़ा:

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

(हां, मुझे पता है कि इसे कम कमांड में किया जा सकता है। आदत।)

फिर मैं टर्मिनल से बाहर निकला, और एक नई शुरुआत की। यहाँ प्रारंभ करें पहले खोए हुए सभी प्रकार के इतिहास वापस लौट आए। कितना अच्छा है?

इसे पढ़ने वाले किसी भी व्यक्ति ने गलती से खुद को इस भविष्यवाणी में डाल दिया है: 0.2%। मुझे यकीन है कि जब मैं कुछ और "फिक्सिंग" कर रहा हूं, तो मैंने इसे गलत तरीके से समझा।


4

मुझे यह समस्या थी और जो मेरे लिए काम करता था वह .bash_sessions_disableमेरे उपयोगकर्ता फ़ोल्डर ( ~/) में नामक एक फ़ाइल बना रहा था ।

मूल रूप से OS X .bash_sessionsप्रत्येक सत्र के लिए फ़ोल्डर में इतिहास फाइलें बनाता है (मेरे मामले में, प्रत्येक टैब के लिए)। और यहां तक ​​कि इन सत्रों को ठीक से बंद करने के बाद, ओएस एक्स ऐतिहासिक को फिर से नहीं करता है .bash_history

बनाना .bash_sessions_disableआप इस व्यवहार को अक्षम करें।

touch ~/.bash_sessions_disable

प्रति-सत्र कमांड इतिहास को अक्षम करना - डिफ़ॉल्ट व्यवहार - जो पूछा जा रहा है, उसके विपरीत है।
क्रिस पेज

@ChrisPage यह केवल सही है यदि प्रश्नकर्ता प्रति सत्र इतिहास के बारे में पूछ रहा है, जो मामला नहीं लगता है ("सत्रों में इतिहास याद रखें")। फ़ोल्डर के .bash_historyअंतर्गत इतिहास को रखने के बजाय किसी एकल इतिहास को दोहराते हुए सत्र सत्र व्यवहार को सक्षम करना ENABLES .bash_sessions/। यह सही उत्तर imho है।
मैट एच

@MattH सवाल पूछता है कि इतिहास को फिर से कैसे काम किया जाए, क्योंकि ऐसा लगता है कि यह बिल्कुल भी काम नहीं कर रहा है, और इस प्रति-सत्र इतिहास सुविधा को अक्षम करना सही दिशा में नहीं जा रहा है। यदि प्रति-सत्र इतिहास तंत्र में कोई बग है, तो किसी को बग रिपोर्ट दर्ज करनी चाहिए, लेकिन एक उत्तर प्रस्तुत करना जैसे कि इसे बंद करना किसी तरह आम तौर पर सभी उपयोगकर्ताओं के लिए सही है ... गलत है। यह सामान्य रूप से ठीक काम करता है। अधिक जानकारी के लिए विभिन्न उत्तरों पर मेरी टिप्पणियाँ देखें।
क्रिस पेज

जब मैंने शुरू में टिप्पणी की थी तो मुझे इसका भी उल्लेख करना चाहिए था: पूरे बैश सेव / रिस्टोर मैकेनिज्म को अक्षम करना एक अंतिम उपाय के रूप में है और यदि संभव हो तो इसे टाला जाना चाहिए। आप प्रति-सत्र कमांड इतिहास व्यवहार SHELL_SESSION_HISTORYको केवल दस्तावेज़ के रूप में 0 पर सेट करके बंद कर सकते हैं /etc/bashrc_Apple_Terminal
क्रिस पेज

1

इस Reddit धागे से इस जवाब ने मुझे बचाया:

यह शायद आरवीएम को चलाने के लिए bash_session के लिए निकास "हुक" को रोक रहा है। यदि आप अपने .bash_profile में निम्न पंक्ति बताते हैं, तो यह काम करना चाहिए।

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

0

मुझे भी इसी तरह की समस्या थी, कोई इतिहास दर्ज नहीं हुआ। दिए गए समाधान काम नहीं करते थे, लेकिन लंबे समय तक मुझे पता चला कि समस्या एक लापता .bash_history के रूप में सरल थी

समाधान के /home/[username]/लिए एक फ़ाइल में जाना और जोड़ना था .bash_history, इसलिए

nano .bash_history

और फिर फ़ाइल में कुछ भी लिखें (अन्यथा यह नहीं बनाया जाएगा), बाहर निकलें और सहेजें। इसके बाद इतिहास ने सामान्य रूप से काम करना शुरू कर दिया।


यदि यह समस्या को हल करता है, तो कुछ और गलत है और अन्य मुद्दों से बचने के लिए इसे ठीक किया जाना चाहिए। यदि आप इतिहास फ़ाइल नहीं होने पर बैश शुरू करते हैं, तो यह एक बना देगा। यदि यह एक बनाने की कोशिश नहीं करता है, या यह इसे बनाने में असमर्थ है, तो कुछ शेल स्टार्टअप स्क्रिप्ट या होम निर्देशिका अनुमतियों में कुछ गड़बड़ है। उदाहरण के लिए, उत्तर देखें: apple.stackexchange.com/a/118764/6883
क्रिस पेज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.