जवाबों:
आपको सेट करने की भी आवश्यकता है HISTSIZE=10000000
।
HISTFILESIZE
जबकि इतिहास फ़ाइल में रखने के लिए लाइनों की संख्या निर्धारित करता है HISTSIZE
स्मृति में रखने के लिए लाइनों की संख्या निर्धारित करता है। दोनों को डिफ़ॉल्ट 500
निष्पादित echo $HISTFILESIZE $HISTSIZE
इससे पहले कि आप बदलाव करें और उसके बाद फिर से। तुम्हे देखना चाहिए 10000000 500
तब पहला 10000000 10000000
बाद।
आपको निर्यात HISTSIZE
तथा HISTFILESIZE
अपने में पर्यावरण चर ~/.bash_profile
फ़ाइल।
अपने में निम्न पंक्तियाँ जोड़ें ~/.bash_profile
:
# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000
समस्या यह है कि 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 को छूने का कोई कारण नहीं है जब तक कि आप अलग-अलग मान नहीं चाहते हैं, और विभिन्न मान रखने के लिए मामलों का उपयोग दुर्लभ है (और आमतौर पर कुछ उपयोगी पाने के लिए अधिक इतिहास अनुकूलन सेटिंग्स शामिल हैं)।