जब भी मैं किसी टर्मिनल का नया उदाहरण खोलता हूं, इतिहास खाली होता है। ऐसा क्यों है? क्या मुझे कुछ स्थापित करने की आवश्यकता है? हालांकि, इसके लिए कोई ज़रूरत नहीं है।
जब भी मैं किसी टर्मिनल का नया उदाहरण खोलता हूं, इतिहास खाली होता है। ऐसा क्यों है? क्या मुझे कुछ स्थापित करने की आवश्यकता है? हालांकि, इसके लिए कोई ज़रूरत नहीं है।
जवाबों:
बैश और zsh में अलग-अलग चूक हैं। Zsh डिफ़ॉल्ट रूप से फ़ाइल को इतिहास नहीं बचाता है।
जब आप किसी कॉन्फ़िगरेशन फ़ाइल के बिना zsh चलाते हैं, तो यह एक कॉन्फ़िगरेशन इंटरफ़ेस प्रदर्शित करता है। इस कॉन्फ़िगरेशन इंटरफ़ेस में, चयन करें
(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)
फिर प्रस्तावित सेटिंग्स की समीक्षा करें और चुनें
# (0) Remember edits and return to main menu (does not save file yet)
(2) के पूरा होने के लिए अन्य सबमेनस के लिए दोहराएं, (3) कीबाइंडिंग और (4) विकल्प, फिर चुनें
(0) Exit, saving the new settings. They will take effect immediately.
मुख्य मेनू से।
अनुशंसित इतिहास-संबंधित सेटिंग्स हैं
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory
मैं इतिहास फ़ाइल के लिए एक अलग नाम का उपयोग करूंगा, यह इंगित करने के लिए कि यह zsh का इतिहास फ़ाइल है। और एक आधुनिक प्रणाली पर 1000 लाइनों को बढ़ाया जा सकता है।
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
ये रेखाएँ ~/.zshrc
जिस रास्ते से जाती हैं।
हालांकि मौजूदा उत्तर सही है, मैंने सोचा कि यह जोड़ने के लायक हो सकता है कि appendhistory
आपके इतिहास को बचाने के लिए संभवतः एक बेहतर विकल्प है और यह है SHARE_HISTORY
।
डॉक्स से SHARE_HISTORY
"दोनों इतिहास फ़ाइल से नए आदेशों को आयात करते हैं, और आपके टाइप किए गए आदेशों को इतिहास फ़ाइल में संलग्न करने का कारण भी बनता है"। इसका मतलब है कि गोले एक दूसरे के इतिहास के बारे में जानते हैं और साथ ही साथ चालू एक को बंद करने या एक नया खोलने के लिए भी हैं।
इसलिए, सभी मिलकर इसे इस तरह सेट करेंगे:
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY
INC_APPEND_HISTORY_TIME
, जो उपरोक्त सभी टर्मिनलों से इतिहास लिखता है, लेकिन यह इतिहास "शेल के अन्य उदाहरणों से तुरंत उपलब्ध नहीं होगा जो समान इतिहास फ़ाइल का उपयोग कर रहे हैं"। यह मेरे लिए अधिक समझ में आता है, क्योंकि तब मैं प्रत्येक टर्मिनल के इतिहास को स्वतंत्र रूप से पार कर सकता हूं, लेकिन यह अभी भी लॉग इन है।
INC_APPEND_HISTORY_TIME
सकता हूं कि अधिक तार्किक अर्थ क्यों हो सकता है। मुझे शायद "बेहतर" नहीं कहा जाना चाहिए था, मुझे लगता है कि यह इस बिंदु पर व्यक्तिगत पसंद की बात है!
जब आप पहली बार bash से zsh पर जाते हैं, तो आपका bash इतिहास खत्म नहीं होगा। तो आपके पास जो भी इतिहास था, वह अभी भी bash के इतिहास की फाइल में है। zsh उस समय से इतिहास पर कब्जा करना शुरू कर देता है जब आप इसे अपने शेल के रूप में उपयोग करना शुरू करते हैं।
यदि आपने इसे इतिहास पर कब्जा करने के लिए सेट नहीं किया है, तो आप कॉन्फ़िगर विज़ार्ड को फिर से चला सकते हैं और zsh को बता सकते हैं कि इतिहास को कितना सहेजना है। या तो ~ / .zshrc का नाम बदलें या विज़ार्ड में एक नया शॉट प्राप्त करने के लिए इसे हटा दें।
यदि यह काम नहीं कर रहा है, और आपके पास यह सब पहले से ही है, तो कोशिश करें:
fc -W
जो इतिहास फ़ाइल में वर्तमान इतिहास लिखता है। और अगर आपको मिलता है:
zsh: locking failed for /home/username/.zsh_history: permission denied
फिर फ़ाइल और पेरेंट डायरेक्टरी पर अनुमतियों की जाँच करने का समय आ गया है ।
zsh
, लेकिन डिफ़ॉल्ट रूपbash
से बाहर निकलने पर अपने इतिहास की फाइलों को लिखता है , जिसका अर्थ है कि यदि आपने पहले इसका उपयोग नहीं किया है और कुछ गोले खोलते हैं, तो वे अब कम से कम एक लॉग आउट होने तक इतिहास दिखाएंगे, जिससे इसकी इतिहास फ़ाइल लिखी जाएगी।