यह पता लगाने के बाद कि shopt -s histappend इसका क्या मतलब है , यह एक बहुत समझदार सेटिंग है, और मुझे आश्चर्य है कि यह डिफ़ॉल्ट नहीं है। कोई भी प्रत्येक शेल निकास पर अपने इतिहास को मिटा देना क्यों चाहेगा?
यह पता लगाने के बाद कि shopt -s histappend इसका क्या मतलब है , यह एक बहुत समझदार सेटिंग है, और मुझे आश्चर्य है कि यह डिफ़ॉल्ट नहीं है। कोई भी प्रत्येक शेल निकास पर अपने इतिहास को मिटा देना क्यों चाहेगा?
जवाबों:
खैर, जब histappendसेट नहीं किया जाता है , तो इसका मतलब यह नहीं है कि प्रत्येक शेल निकास पर इतिहास मिटा दिया जाता है। बिना histappendबैश के हिस्टिफ़ाइल को स्टार्टअप पर मेमोरी में पढ़ा जाता है - ऑपरेशन के दौरान नई प्रविष्टियाँ जोड़ी जाती हैं - और शेल से बाहर निकलने के बाद पिछले HISTSIZE लाइनों को इतिहास फ़ाइल में बिना किसी अपॉइंटमेंट के लिखा जाता है, अर्थात पिछली सामग्री की जगह।
उदाहरण के लिए, यदि हिस्टफ़ाइल में 400 प्रविष्टियाँ होती हैं, तो बैश रनटाइम के दौरान 10 नई प्रविष्टियाँ जोड़ी जाती हैं - histize को 500 पर सेट किया जाता है, तो नए हिस्टफ़ाइल में 410 प्रविष्टियाँ होती हैं।
यह व्यवहार केवल समस्याग्रस्त है यदि आप समानांतर में अधिक बैश उदाहरणों का उपयोग करते हैं। उस स्थिति में, इतिहास फ़ाइल में केवल अंतिम निकास शेल की सामग्री होती है।
इससे स्वतंत्र: कुछ लोग हैं जो गोपनीयता कारणों की वजह से अपने इतिहास को खोल से बाहर निकालना चाहते हैं।
histappendकोई प्रासंगिकता है कि क्या rootइतिहास डिस्क तक पहुंचता है? फिर, यह केवल वही प्रभावित करता है जो लिखा जाता है, यदि नहीं ।
histappendजैसा HISTCONTROL=ignoredups:erasedups:ignorespaceलगता है।
histappendप्रभावी व्यर्थ अगर मेरे पास है HISTFILESIZE=और HISTSIZE=अनंत इतिहास के लिए?
histappendसमवर्ती चलने वाले गोले से नए इतिहास के बिना तो खो जाएगा और केवल अंतिम निकास शेल की प्रविष्टियों को बचाया जाएगा। Btw, मुझे नहीं पता कि HISTSIZE=एक नकारात्मक के रूप में एक ही प्रभाव है HISTSIZE।
ऐतिहासिक अनुकूलता के लिए, मुझे लगता है। histappendविकल्प बैश 2.0 जब तक मौजूद नहीं था।
histappend।
bash'शुद्ध' या डिस्ट्रो-आपूर्ति.bashrc। पूर्व के लिए, @ गिल्स शायद सही है। बाद के अर्थ में,-s histappendहै : पर डिफ़ॉल्ट, जैसे, डेबियन, 2008 के बाद से bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459