क्या .zshenv, .zshrc, .zlogin, .zprofile .zlogout में नहीं जाना चाहिए?


130

मैं उन दिशानिर्देशों की तलाश कर रहा हूं, जिनके लिए विभिन्न स्टार्टअप फ़ाइलों में क्या शामिल होना चाहिए और क्या नहीं zsh

मैं इन फ़ाइलों के सोर्सिंग के आदेश को समझता हूं, और जिन शर्तों के तहत वे खट्टे हैं, लेकिन यह अभी भी मेरे लिए स्पष्ट नहीं है कि प्रत्येक में क्या जाना चाहिए।


जवाबों:


155

यहाँ एक गैर-अनन्य सूची है जिसमें प्रत्येक फ़ाइल शामिल है:

  • चूंकि .zshenvहमेशा खट्टा होता है, इसमें अक्सर निर्यात किए गए चर होते हैं जो अन्य कार्यक्रमों के लिए उपलब्ध होना चाहिए। उदाहरण के लिए, $PATH, $EDITOR, और $PAGERअक्सर में सेट कर रहे हैं .zshenv। इसके अलावा, आप सेट कर सकते हैं $ZDOTDIRमें .zshenvअपने zsh विन्यास के बाकी के लिए एक वैकल्पिक स्थान निर्दिष्ट करने के।
  • .zshrcइंटरेक्टिव शेल कॉन्फ़िगरेशन के लिए है। आप वहां setoptऔर unsetoptकमांड के साथ इंटरेक्टिव शेल के लिए विकल्प सेट करते हैं । आप शेल मॉड्यूल भी लोड कर सकते हैं, अपने इतिहास के विकल्प सेट कर सकते हैं, अपना प्रॉम्प्ट बदल सकते हैं, ज़ेल सेट कर सकते हैं और पूरा कर सकते हैं, वगैरह-वगैरह। आप किसी भी चर को सेट करते हैं जो केवल इंटरेक्टिव शेल (उदा $LS_COLORS) में उपयोग किया जाता है ।
  • .zloginएक लॉगिन शेल के शुरू होने पर दिया जाता है। इस फ़ाइल का उपयोग अक्सर X का उपयोग शुरू करने के लिए किया जाता है startx। कुछ सिस्टम बूट पर X शुरू करते हैं, इसलिए यह फ़ाइल हमेशा बहुत उपयोगी नहीं होती है।
  • .zprofileमूल रूप से .zloginसिवाय इसके कि इसके .zshrcबाद सीधे खट्टा होने के बजाय इसे सीधे खट्टा किया जाता है। Zsh प्रलेखन के अनुसार, " .zprofileksh प्रशंसकों के लिए '.zlogin' के विकल्प के रूप में अभिप्रेत है, दोनों को एक साथ उपयोग करने का इरादा नहीं है, हालांकि यह निश्चित रूप से वांछित होने पर किया जा सकता है।"
  • .zlogout कभी-कभी टर्मिनल को साफ़ करने और रीसेट करने के लिए उपयोग किया जाता है।

आपको यादृच्छिक गिथब उपयोगकर्ताओं की कॉन्फ़िगरेशन फ़ाइलों के माध्यम से जाना चाहिए ताकि प्रत्येक फ़ाइल में क्या होना चाहिए, इसका बेहतर विचार प्राप्त कर सकें।


3
स्पष्टता के एक बिंदु के रूप में, .zlogin को .zshrc ( man zshallविवरण के लिए देखें) के बाद खट्टा किया जाता है ।
आरोन

8
जब की स्थापना ध्यान रखें $PATHमें .zshenv, विभिन्न अन्य फ़ाइलें सभी इस फ़ाइल है कि इस मूल्य को पार कर जाएगी के बाद sourced रहे हैं। Zsh.org/mla/users/2003/msg00600.html देखें ।
ब्यू बार्कर

कहाँ जाना $LANGऔर $LC_ALLजाना चाहिए ?
लेनार होयट

23
बस अपने स्वयं के नोट्स / पुष्टि के लिए और किसी और की मदद करने के लिए, अंतिम आदेश है .zshenv→ [ .zprofileअगर लॉगिन] → [ .zshrcअगर इंटरैक्टिव] → [ .zloginअगर लॉगिन] → [ .zlogoutकभी-कभी]।
गैब्रियल एल

23

मेरी राय में प्रत्येक फ़ाइल में क्या होना चाहिए / नहीं, इसकी सूची यहां दी गई है:

.zshenv

[हर बार पढ़ें]

यह हमेशा खट्टा होता है, इसलिए इसे पर्यावरण चर सेट करना चाहिए जिसे अक्सर अद्यतन करने की आवश्यकता होती हैPATH (या इसके संबंधित समकक्ष पथ ) एक अच्छा उदाहरण है क्योंकि आप शायद इसे अपडेट करने के लिए अपने पूरे सत्र को पुनरारंभ नहीं करना चाहते हैं। इसे उस फ़ाइल में सेट करके, एक टर्मिनल एमुलेटर को फिर से खोलना एक नया Zsh उदाहरण शुरू करेगा जिसमें PATH मान अपडेट किया गया है।

लेकिन ध्यान रहे कि यह फाइल तब भी पढ़ी जाती है जब Zsh को एक ही कमांड ( -c ऑप्शन के साथ) चलाने के लिए लॉन्च किया जाता है , यहां तक ​​कि किसी अन्य टूल द्वारा भी make। आपको मानक आदेशों के डिफ़ॉल्ट व्यवहार को संशोधित नहीं करने के लिए बहुत सावधान रहना चाहिए क्योंकि यह कुछ उपकरणों को तोड़ सकता है जो उनका उपयोग करते हैं (उदाहरण के लिए उपनाम सेट करके)। निश्चित रूप से, यह निषिद्ध नहीं है क्योंकि आप जानते हैं कि आप क्या कर रहे हैं।

.zprofile

[लॉगिन पर पढ़ें]

मैं व्यक्तिगत रूप से उस फ़ाइल का इलाज करता हूं, .zshenvलेकिन आदेशों और चर के लिए, जिन्हें एक बार सेट किया जाना चाहिए या जिन्हें अक्सर अपडेट करने की आवश्यकता नहीं है :

  • पर्यावरण चर उपकरण कॉन्फ़िगर करने के लिए (झंडे संकलन, डेटा फ़ोल्डर स्थान, आदि के लिए)
  • कॉन्फ़िगरेशन जो कमांड निष्पादित करता है (जैसे SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))") इसे निष्पादित करने में कुछ समय लग सकता है।

यदि आप उस फ़ाइल को संशोधित करते हैं, तो आप वर्तमान शेल को नए रूप में लॉगिन शेल के रूप में बदलकर कॉन्फ़िगरेशन अपडेट प्राप्त कर सकते हैं:

exec zsh --login

.zshrc

[पढ़ें जब इंटरैक्टिव]

मैंने यहाँ केवल इंटरैक्टिव उपयोग के लिए आवश्यक सब कुछ रखा :

  • प्रेरित करना,
  • कमांड पूरा करना,
  • कमांड सुधार,
  • कमांड सुझाव,
  • कमांड हाइलाइटिंग,
  • उत्पादन रंग,
  • उपनाम,
  • कुंजी बाइंडिंग,
  • इतिहास प्रबंधन,
  • अन्य विविध इंटरैक्टिव उपकरण (auto_cd, manydots- जादू) ...

.zlogin

[लॉगिन पर पढ़ें]

यह फ़ाइल पसंद है .zshprofile, लेकिन इसके बाद पढ़ी जाती है .zshrc। मैं इस समय शेल को पूरी तरह से स्थापित करने पर विचार करता हूं।

इसलिए, मैं इसे बाहरी कमांड लॉन्च करने के लिए उपयोग करता हूं जो शेल व्यवहार (जैसे एक लॉगिन प्रबंधक) को संशोधित नहीं करता है।

.zlogout

[लॉगआउट पर पढ़ें] [लॉगिन शेल के भीतर]

यहां, आप लॉगिन पर अपने टर्मिनल या किसी अन्य संसाधन सेटअप को साफ़ कर सकते हैं।

मैं कैसे चुनूँ जहाँ सेटिंग करना है

  • यह गैर-अंतःक्रियात्मक रूप से चलने वाले कमांड द्वारा आवश्यक है :.zshenv
  • इसे नए शेल पर अपडेट किया जाना चाहिए :.zshenv
  • यह एक कमांड चलाता है जिसे पूरा होने में कुछ समय लग सकता है :.zprofile
  • यह इंटरेक्टिव उपयोग से संबंधित है :.zshrc
  • जब शेल पूरी तरह से सेटअप हो जाए तो इसे चलाना एक कमांड है :.zlogin
  • यह लॉगिन पर प्राप्त संसाधन जारी करता है :.zlogout

0

ssh-agentमें कॉल मत डालो .zshenv। इसने मेरे lessआदेश को किसी भी पाठ फ़ाइलों को प्रदर्शित नहीं करने का कारण बना , शायद इसलिए कि इसके विकल्प Prezto ( export LESS='-F -g -i -M -R -S -w -X -z-4'में .zprofile) द्वारा अनुकूलित किए गए थे ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.