मैक OSX बैश शेल इतिहास की लंबाई नहीं बढ़ा सकते


16

मैंने कुछ समय पहले ~ / .bash_profile को 500 से अधिक लाइनों की लंबाई निर्धारित किया है, लेकिन लगता है कि सिस्टम इसे पकड़ नहीं सकता है।

तुम जानते हो क्यों?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500

जवाबों:


27

आपको सेट करने की भी आवश्यकता है HISTSIZE=10000000

HISTFILESIZE जबकि इतिहास फ़ाइल में रखने के लिए लाइनों की संख्या निर्धारित करता है HISTSIZE स्मृति में रखने के लिए लाइनों की संख्या निर्धारित करता है। दोनों को डिफ़ॉल्ट 500

निष्पादित echo $HISTFILESIZE $HISTSIZE इससे पहले कि आप बदलाव करें और उसके बाद फिर से। तुम्हे देखना चाहिए 10000000 500 तब पहला 10000000 10000000 बाद।


5

आपको निर्यात HISTSIZE तथा HISTFILESIZE अपने में पर्यावरण चर ~/.bash_profile फ़ाइल।

अपने में निम्न पंक्तियाँ जोड़ें ~/.bash_profile:

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

2

समस्या यह है कि HISTFILESIZE केवल एक सत्र में स्टार्टअप करते समय फ़ाइल में संग्रहीत अधिकतम इतिहास सेट करता है। HISTSIZE वह है जो निर्धारित करता है कि सत्र के अंत में कितनी लाइनें बचाई गई हैं। यदि HISTFILESIZE आपके HISTSIZE से बड़ा है, तो आप कभी भी अपने HISTSIZE से अधिक नहीं देख पाएंगे क्योंकि फ़ाइल HISTSIZE कमांड से अधिलेखित हो रही है ( जब तक आप इतिहास को जोड़ने के लिए निर्धारित करते हैं, लेकिन यह एक अलग विषय है: ऊपर देखें histappend में शेल बिलिन कमांड उसके लिए)।

यही कारण है कि आप कोई प्रभाव नहीं देख रहे हैं। डिफ़ॉल्ट रूप से HISTSIZE के साथ (शायद 500) आपकी इतिहास फ़ाइल हमेशा सबसे हाल के $ HISTSIZE कमांड द्वारा अधिलेखित हो रही है। कुछ भी पुराना (जो संभावित रूप से पिछले $ HISTSIZE सूची को बढ़ा सकता है) मिटा दिया जाता है।

10 मिलियन लाइनों को बचाने के लिए, आपको केवल अपने में HISTSIZE सेट करना होगा ~/.bash_profile:

HISTSIZE=10000000

अधिकांश मामलों के लिए स्वतंत्र रूप से HISTFILESIZE सेट करने की कोई आवश्यकता नहीं है।

HISTSIZE यह निर्धारित करता है कि इतिहास फ़ाइल में कितनी पंक्तियाँ लिखी जाएँगी। कमांड लिस्ट को बाहर निकलने पर छोटा कर दिया जाता है, इतिहास फ़ाइल में लिखने से पहले, एन को सबसे हाल ही में रखते हुए। डिफ़ॉल्ट रूप से, यह सूची इतिहास फ़ाइल को अधिलेखित कर देती है।

HISTFILESIZE यह निर्धारित करता है कि इतिहास फ़ाइल (लाइनों में) कितनी बड़ी हो सकती है। एन सबसे हाल की लाइनों को रखते हुए, फ़ाइल को स्टार्टअप पर छोटा कर दिया जाता है। इसके अलावा, जब भी HISTFILESIZE को सेट किया जाता है, तो इतिहास फ़ाइल को संभावित रूप से काट दिया जाता है।

अंत में, हालांकि यह अनिर्दिष्ट प्रतीत होता है, अगर HISTSIZE स्टार्टअप के दौरान सेट किया गया है, तो BIS HISTSIZE पर आधारित HISTFILESIZE सेट करता है। मैंने इसे macOS पर आज़माया है, और उबंटू की कुछ किस्में, और व्यवहार सुसंगत है। यदि आप लॉन्च फ़ाइल में HISTSIZE सेट करते हैं ( नहीं किसी भी तरह से कमांड लाइन के माध्यम से), HISTFILESIZE को मिलान के लिए सेट किया जाएगा। (इसे स्वयं आज़माएँ: HISTSIZE को कुछ मनमाने ढंग से बड़े मूल्य में .bash_profile पर सेट करें, बाहर निकलें और एक नया टर्मिनल शुरू करें, फिर echo $HISTSIZE $HISTFILESIZE और आप उन्हें मेल खाते हुए पाएंगे।)

परिणामस्वरूप, HISTFILESIZE को छूने का कोई कारण नहीं है जब तक कि आप अलग-अलग मान नहीं चाहते हैं, और विभिन्न मान रखने के लिए मामलों का उपयोग दुर्लभ है (और आमतौर पर कुछ उपयोगी पाने के लिए अधिक इतिहास अनुकूलन सेटिंग्स शामिल हैं)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.