जवाबों:
HISTSIZE आपके बैश सत्र के चालू रहने के दौरान इतिहास की सूची में स्मृति में संग्रहीत लाइनों या आदेशों की संख्या होती है।
HISTFILESIZE एक सत्र के स्टार्टअप समय में (ए) को इतिहास फ़ाइल में उन पंक्तियों या आदेशों की संख्या की अनुमति है, और (बी) भविष्य के सत्रों में उपयोग के लिए आपके बैश सत्र के अंत में इतिहास फ़ाइल में संग्रहीत हैं।
स्मृति में file: पर - और list: के बीच अंतर को नोटिस करें ।
उपरोक्त सभी जानकारी + कुछ उदाहरण:
उदाहरण 1 :
HISTFILESIZE=10औरHISTSIZE=10
histappendमें सक्षम नहीं है, 41 से 50 कमांड आपके HISTFILE में सहेजे गए हैं जो अब 10 कमांड हैं जो इसे शुरुआत में आयोजित किए गए हैं और साथ ही 10 नए लिखित कमांड।उदाहरण 2 :
HISTFILESIZE=10औरHISTSIZE=5
histappendमें सक्षम नहीं है, 46 से 50 कमांड आपके HISTFILE में सहेजे गए हैं जो अब 10 कमांड हैं जो इसे शुरुआत में आयोजित किए गए हैं और साथ ही 5 नए लिखित कमांड।उदाहरण 3 :
HISTFILESIZE=5औरHISTSIZE=10
histappendकि सक्षम नहीं है, 41 से 50 कमांड आपके HISTFILE में सहेजे गए हैं जो अब 5 कमांड्स हैं जो इसे शुरुआत में आयोजित किए गए हैं और साथ ही 10 नए लिखित कमांड।Elixir_sinari से जानकारी :
जैसे ही आप कमांड टाइप करते हैं, इतिहास "फाइल" अपडेट नहीं होता है। आदेश एक "सूची" में अलग से संग्रहीत (इतिहास कमांड द्वारा पहुँचा)। इन संग्रहीत आदेशों की संख्या HISTSIZE मान द्वारा नियंत्रित की जाती है। जब शेल (इंटरेक्टिव) बाहर निकलता है, तो अंतिम HISTSIZE लाइनों को उस सूची से $ HISTFILE में कॉपी / जोड़ा जाता है। यदि HISTFILESIZE सेट है, तो इस ऑपरेशन के बाद, यह सुनिश्चित किया जाता है कि $ HISTFILESIZE लाइनें (नवीनतम) $ HISTFILE में मौजूद हैं। और जब शेल शुरू होता है, तो "सूची" को $ HISTFILE से अधिकतम $ HISTSIZE कमांड तक आरंभ किया जाता है।
और man bashपेज से:
HISTSIZE चर का मान इतिहास सूची में सहेजने के लिए कमांड की संख्या के रूप में उपयोग किया जाता है। अंतिम HISTSIZE कमांड (डिफ़ॉल्ट 500) का पाठ सहेजा गया है। (...)
स्टार्टअप पर, इतिहास को HISTFILE (डिफ़ॉल्ट ~ / .bash_history) द्वारा नामित फ़ाइल से आरंभ किया गया है। यदि आवश्यक हो, तो HISTFILESIZE के मान द्वारा निर्दिष्ट पंक्तियों की संख्या से अधिक नहीं होने के लिए, HISTFILE के मान द्वारा नामित फ़ाइल को छोटा किया गया है। (...) जब एक इंटरैक्टिव शेल बाहर निकलता है, तो अंतिम $ HISTSIZE लाइनों को इतिहास सूची से $ HISTFILE में कॉपी किया जाता है। यदि हिस्टैपेंड शेल विकल्प सक्षम किया गया है (नीचे शेल बिल्डिन के नीचे शॉप्ट का विवरण देखें), लाइनें इतिहास फ़ाइल में संलग्न हैं, अन्यथा इतिहास फ़ाइल ओवरराइट की गई है। यदि HISTFILE परेशान है, या यदि इतिहास फ़ाइल अपरिहार्य है, तो इतिहास सहेजा नहीं गया है। (...) इतिहास को सहेजने के बाद, इतिहास फ़ाइल को HISTFILESIZE लाइनों से अधिक नहीं रखने के लिए छोटा किया गया है। यदि HISTFILESIZE सेट नहीं है,
Arturomp ने जो कहा है उसके शीर्ष पर निर्माण करना और इसे थोड़ा स्पष्ट करने के प्रयास में।
मान लें कि आपके पास 2000-कुछ लंबा इतिहास है ..
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2027 78
2028 57
2029 yu45u
आप जो दिखाया गया है उसे काट सकते हैं HISTSIZE
~$ HISTSIZE=5
~$ history
2026 546
2027 78
2028 56
2029 yu45u
2030 HISTSIZE=5
अब, चाहे आप कितने भी कमांड टाइप करें, केवल अंतिम 5 दर्ज किया जाएगा।
~$ ABC
~$ GGH
~$ GSDHFG
~$ JFDR
~$ ABSDDS
~$ AHFGHFD
<close terminal>
<open new terminal>
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2028 56
2029 yu45u
2030 HISTSIZE=5
2031 GGH
2032 GSDHFG
2033 JFDR
2034 ABSDDS
2035 AHFGHFD
हम स्पष्ट रूप से देख सकते हैं कि हमारा पहला कमांड ("एबीसी") इतिहास में नहीं है क्योंकि केवल अंतिम 5 कमांड दर्ज किए गए थे।
अब, कुल इतिहास एक फ़ाइल ( .bash_history) में संग्रहीत किया जाता है और आप बदल सकते हैं कि यह फ़ाइल कितने समय के लिए मिलती है HISTFILESIZE। उदाहरण के लिए 2033 HISTFILESIZE, मेरे मामले में मेरे पास यह होगा:
~$ history
1 fghfghdf
2 gegege
3 gege
.. ..
2028 HISTSIZE=5
2029 GGH
2030 GSDHFG
2031 JFDR
2032 ABSDDS
2033 AHFGHFD
HISTSIZE=-1और HISTFILESIZE=-1।
bashमैन पेज कहता है: Non-numeric values and numeric values less than zero inhibit truncationलेकिन तब मेरे पास यह जाँचने का साहस नहीं था कि क्या यह सच है क्योंकि मैं अपने इतिहास को ढीला नहीं करना चाहता हूं :-)
HISTSIZE='INFINITY'और HISTFILESIZE='ANDBEYOND'। चूंकि वे गैर-संख्यात्मक हैं, इसलिए वे सब कुछ बचाते हैं। पारितोषिक के लिए धन्यवाद!