2015-09-05 9 views
31

में बैश सत्र कैसे अक्षम कर सकता हूं ओएस एक्स एल कैपिटन (10.11 बीटा) is Bash sessions (Terminal sessions) में एक प्रतीत होता है कि नई सुविधा। अब मेरे पास इतिहास फ़ाइलों के साथ ~/.bash_sessions निर्देशिका है, और मेरे HISTFILE और HISTIGNORE envars को ओवरराइड किया जा रहा है। मैं इस सारी कार्यक्षमता को कैसे अक्षम कर सकता हूं?मैं ओएस एक्स एल कैपिटन

+1

"... मेरा ... इतिहास विजेता envars ओवरराइड किया जा रहा है।" क्या आप निश्चित हैं? '/ etc/bashrc_Apple_Terminal' 'HISTIGNORE' को परिवर्तित नहीं करता है (यह बिल्कुल संदर्भित नहीं है)। –

+1

* यदि 'हिस्टैपेंड' खोल विकल्प सक्षम है, तो प्रति सत्र इतिहास डिफ़ॉल्ट रूप से अक्षम किया जाता है * – yckart

उत्तर

40

यदि आप मैन्युअल रूप से एक नया बैश सत्र शुरू करते हैं (यानी bash -xl), तो आप देख सकते हैं कि लॉगिन पर क्या चल रहा है।

आप उत्पादन में निम्नलिखित पंक्ति देखेंगे:

.... 
+++ '[' '!' -e /Users/username/.bash_sessions_disable ']' 

आप इस कार्यक्षमता को निष्क्रिय करने के लिए अपने घर निर्देशिका में .bash_sessions_disable फ़ाइल बना सकते हैं।

+0

मुझे पहले से थोड़ा अधिक इतिहास तक पहुंच पसंद है, लेकिन क्या यह स्वयं पर कोई सीमा लगाता है? ऐसा लगता है कि 10.11 इंस्टॉल करने के बाद से प्रत्येक टर्मिनल आमंत्रण के लिए मेरे पास दो या तीन फ़ाइलें हैं। प्रति माह केवल दो मेगाबाइट्स, लेकिन अभी भी .... – WGroleau

+0

@WGroleau: यह सुविधा इतिहास की मात्रा के बारे में नहीं है, यह प्रत्येक टर्मिनल सत्र के लिए अलग-अलग कमांड इतिहास संग्रहीत करने के बारे में है ताकि यदि आप फिर से शुरू करने के साथ टर्मिनलों को पुनर्स्थापित करेंगे तो इतिहास अलग रहेगा जैसा कि आपने शुरुआत में उन्हें बनाया था। सामान्य 'HISTSIZE' और' HISTFILESIZE 'खोल चर अभी भी लागू होते हैं। वास्तव में, यह अनुशंसा की जाती है कि आप उनमें से एक या दोनों को बड़ा बनाएं, क्योंकि प्रत्येक सत्र वैश्विक इतिहास '~/.bash_history' फ़ाइल में भी अपना इतिहास जोड़ता है, इसलिए आपका पूरा इतिहास नए टर्मिनल में उपलब्ध है। अधिक जानकारी के लिए '/ etc/bashrc_Apple_Terminal' में टिप्पणियां देखें। –

+0

@WGroleau: यह दिन में एक बार, दो सप्ताह से अधिक पुराने सत्र फ़ाइलों को स्वचालित रूप से हटा देता है। –

22

यह व्यवहार /etc/bashrc_Apple_Terminal में परिभाषित किया गया है। इसमें दस्तावेज़ों की टिप्पणियां शामिल हैं जो यह बताती हैं कि यह क्या करती है और इसे कैसे अनुकूलित करें।

आप यहां बताए अनुसार, अपने ~/.bashrc लिपि में SHELL_SESSION_HISTORY=0 की स्थापना द्वारा प्रति टर्मिनल सत्र आदेश इतिहास सुविधा को अक्षम कर सकते हैं: 0 SHELL_SESSION_HISTORY की स्थापना करके

आप इस व्यवहार को एक भी इतिहास को अक्षम कर सकते हैं और साझा कुछ सामान्य उपयोगकर्ता अनुकूलन हैं जो द्वारा चल रहे गोले के बीच नए कमांड को प्रत्येक प्रॉम्प्ट पर इतिहास में हेरफेर करने की व्यवस्था करते हैं, और उनमें आमतौर पर 'shopt -s histappend' शामिल होता है; इसलिए, यदि हिस्टैपेंड खोल विकल्प सक्षम है, प्रति सत्र इतिहास डिफ़ॉल्ट रूप से अक्षम है। आप स्पष्ट रूप से इसे SHELL_SESSION_HISTORY की स्थापना द्वारा करने के लिए 1.

ध्यान दें कि, यद्यपि आप ~/.bash_sessions_disable बनाकर पूरे सत्र राज्य बहाली तंत्र निष्क्रिय कर सकते हैं, इस प्रति-सत्र के आदेश इतिहास सुविधा को अक्षम करने के लिए सिर्फ अनावश्यक है सक्रिय कर सकते हैं, और अनुशंसित नहीं है।

+1

अच्छा लगता है! '/ Etc/bashrc_Apple_Terminal' के माध्यम से देखकर मुझे विश्वास होता है कि सुविधा को पूरी तरह से रोकने का एकमात्र तरीका' HOME/.bash_sessions_disable "सेट करना है (यानी, उस फ़ाइल के बिना यह अभी भी सत्र निर्देशिका बनायेगा)। – Whymarrh

+0

@Wymymhh क्या आप मेरे उत्तर का हिस्सा याद करते थे? मैंने कहा कि वह फ़ाइल सत्र-राज्य तंत्र को अक्षम करती है-लेकिन यदि आप जो करना चाहते हैं वह ओवर-बिल है, तो प्रति सत्र शेल कमांड इतिहास अक्षम करें। –

+1

ऐसा लगता है कि मैंने उस अंतिम पंक्ति को गलत तरीके से पढ़ा है, हां। उसके लिए माफ़ करना। – Whymarrh

6

संक्षेप में, इसे ऐप्पल की Resume सुविधा के साथ करना है। जब यह सुविधा सक्षम होती है, जब आप किसी ऐप को छोड़ देते हैं या रीबूट करते हैं, अगली बार जब ऐप खुलता है तो यह उन विंडो को खोल देगा जो पहले खुले थे।

  1. $HOME/.bash_sessions_disable चाहिए वर्तमान
  2. System Preferences/General/Close Windows when quitting an appनहीं जाँच की जानी चाहिए नहीं हो:

    टर्मिनल के संबंध में, तीन बातें ऐसा करने के लिए जगह में रहना होगा।

  3. रीबूट करते समय, का चयन करें।

जब आप टर्मिनल को फिर से खोलें, तो वह उसी स्क्रीन और टैब को उसी स्क्रीन स्थिति में पहले से खोल देगा। इसके अतिरिक्त, यदि आपने Terminal/Preferences/your-window-type/Windows/Resume/Restore-text-when-reopening-windows चेक किया है, तो यह प्रत्येक स्क्रीन पर टेक्स्ट को पुनर्स्थापित करेगा।

अंत में, और इस ओपी के सवाल का विशेष रूप से संबंधित है, यह प्रत्येक विंडो/टैब में इतिहास को बहाल कर देगी, तो निम्न स्थितियों में पकड़:

  1. SHELL_SESSION_HISTORY सेट नहीं है या 1
  2. shopt histappend करने के लिए सेट नहीं है सेट
  3. HISTTIMEFORMAT

सेट नहीं है SHELL_SESSION_HISTORY स्पष्टमें 1 पर सेट है, पिछले दो आवश्यकताओं को ओवरराइड किया गया है, यानी shopt histappend या HISTTIMEFORMAT सेट किया जा सकता है।

इसके अतिरिक्त, ध्यान HISTSIZE और HISTFILESIZE चरों पर भुगतान करने की आवश्यकता है। उन्हें बहुत बड़ा या बहुत छोटा नहीं होना चाहिए, और कुछ उन्हें अनसेट छोड़ने की सलाह देते हैं ताकि वे ऐप्पल के डिफ़ॉल्ट मान ले सकें।

संबंधित मुद्दे