Zsh में कमांड इतिहास


32

वर्तमान में मैंने zsh को इस तरह से स्थापित किया है कि कमांड इतिहास तुरंत सभी सत्रों के बीच साझा किया जाता है।

मान लें कि मेरे पास दो टैब के साथ एक टर्मिनल एमुलेटर खुला है, प्रत्येक एक zsh सत्र के साथ A1 और A2। यदि मैं A1 में ls -la दर्ज करता हूं , और फिर A2 में जाता हूं और एरो कुंजी दबाता हूं, तो मैं कमांड प्रॉम्प्ट में ls -la देखूंगा ।

मैं इसे बदलना चाहता हूं, इसलिए सत्र एक दूसरे के साथ कमांड इतिहास साझा नहीं करते हैं, हालांकि जब आप नया सत्र शुरू करते हैं तो इसे सभी सत्रों से पिछले इतिहास प्राप्त होता है।


मैं ऐसा नियमित रूप से करता हूं। हालांकि बहुत सारे सवाल हैं जिनका अभी भी कोई संतोषजनक जवाब नहीं है।
कला

शानदार सवाल और मददगार जवाब। मैंने सोचा कि यह विशेष रूप से एक iTerm2 बात थी। उम्मीद है कि इस टिप्पणी को इस तरह से अगर वे एक ही धारणा बना लेंगे।
एलन एच।

जवाबों:


40

आप शायद INC_APPEND_HISTORYसेट हो गए हैं।

INC_APPEND_HISTORYविकल्प, से man zshoptions:

यह विकल्प APPEND_HISTORY की तरह काम करता है, सिवाय इसके कि नई इतिहास पंक्तियों को $ HISTFILE में वृद्धिशील रूप से जोड़ा जाता है (जैसे ही वे दर्ज किए जाते हैं), बजाय इसके शेल निकलने तक प्रतीक्षा करने के।

विकल्प जो आप चाहते हैं APPEND_HISTORY:

APPEND_HISTORY यदि इसे सेट किया जाता है, तो zsh सेशन अपनी इतिहास सूची को इतिहास की फाइल में बदलेगा, बजाय इसके। इस प्रकार, कई समानांतर zsh सत्रों में उनके इतिहास की नई प्रविष्टियों को इतिहास फ़ाइल में जोड़ दिया जाएगा, जिस क्रम में वे बाहर निकलते हैं। फ़ाइल को तब भी समय-समय पर इसे ट्रिम करने के लिए फिर से लिखा जाएगा जब $ SAVEHIST द्वारा निर्दिष्ट मूल्य से परे लाइनों की संख्या 20% बढ़ जाती है (यह भी देखें विकल्प द्वारा कॉपी विकल्प)।

आप में इन विकल्पों के बारे में पढ़ा सकते हैं man zshoptions, man zshallया ऑनलाइन यहाँ

उन्हें सेट करने के लिए, आपके ~/.zshrcया समान में, आपके पास होना चाहिए:

setopt APPEND_HISTORY

ध्यान रखें कि, यदि आप डिफ़ॉल्ट रूप से ओह-माय-ज़श का उपयोग कर रहे हैं, तो मेरा मानना ​​है कि INC_APPEND_HISTORYइसका उपयोग किया जाता है। मैं 100% निश्चित नहीं हूं कि किस तरह से चीजें लोड होती हैं, लेकिन यदि oh-my-zshविकल्प आपके द्वारा सेट किए गए को ओवरराइड करता है ~/.zshrc, तो आप इसके साथ फील कर सकते हैं~/.oh-my-zsh/lib/history.zsh


echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
youfu

ITerm2 को एक पुनरारंभ (zsh और ओह-माय-ज़श के लिए) के बाद टैब के व्यक्तिगत इतिहास को पुनर्स्थापित करने के लिए कैसे कॉन्फ़िगर किया जा सकता है?
गोगोल

10

स्वीकृत उत्तर में जोड़ने के लिए, यदि आप उपयोग करते हैं oh-my-zsh, तो संभवतः आपके पास SHARE_HISTORYडिफ़ॉल्ट रूप से सक्षम विकल्प है।

एक नए खुले टर्मिनल में संयुक्त रूप से चल रहे गोले + पूरे इतिहास के बीच पृथक्करण प्राप्त करने के लिए, आपको निम्नलिखित पंक्ति में टिप्पणी या हटाना होगा:

setopt share_history # share command history data

से ~/.oh-my-zsh/lib/history.zsh


मेरे मामले में, history.zsh फ़ाइल का पथ है~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
suzanshakya

3
इसके बारे में जाने का एक और तरीका यह है कि unsetopt share_historyआपके लोड .zshrcहोने के बाद इसे अंदर डाला जाए oh-my-zshयहां दस्तावेज दिया गया है
counterbeing

धन्यवाद @ मेरे लिए यह तय करने के कारण कि - आपको इसे एक अलग उत्तर देना चाहिए, इसे ठीक करने का सबसे आसान तरीका है
jcollum
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.