सही ढंग से वातावरण की स्थापना


15

मैं gnome चलाने के लिए zsh और gdm का उपयोग कर रहा हूं। कुछ समय पहले मुझे पता चला कि चर सही तरीके से सेट नहीं हैं। उदाहरण के लिए LANG / LC_ALL गलत हैं ( ""इसके बजाय en_GB.UTF-8)।

मैं विभाजित .zshrcमें .zshrcऔर .profile। उत्तरार्द्ध में मैंने पर्यावरण चर निर्धारित किए, लेकिन सत्र शुरू होने से पहले मैं चर कैसे निर्धारित कर सकता हूं? मैंने कुछ विकल्पों की कोशिश की ( .xinitrc, .xsessionrc) लेकिन कोई भी काम नहीं कर रहा था।

स्पष्ट करने के लिए संपादित करें - मैंने इसका उपयोग किया था .profileऔर मैन्युअल रूप से इसे चालू किया था .zshrc। यह वैसे भी सवाल नहीं बदलता है।


क्या आपका .profileलोड बिल्कुल नहीं है, या लोकल वेरिएबल को ओवरराइट करने के लिए कुछ और है? (जैसे कुछ अन्य चर सेट करने का प्रयास export MACIEJ_PROFILE=yesसुनिश्चित करने के लिए। set -xमें .profileक्या में मार डाला जा रहा है और बाद की जाँच करने के लिए एक अच्छा तरीका हो सकता है .profile, अगर यह सब पर पढ़ रहा है।) सोर्सिंग का कोई मतलब नहीं है .profileसे .zshrc
गिल्स एसओ- बुराई को रोकना '

क्या यह टर्मिनल विंडो या कहीं और एक समस्या है? क्या आप अपनी वांछित लोकेल सेटिंग प्राप्त करते हैं ssh localhost zsh? किस बारे में ssh localhost bash? यदि बैश ठीक है लेकिन नहीं zsh, हो सकता है आप में कुछ डाल /etc/zshenvया ~/.zshenv(जो एक बुरा विचार है काफी हमेशा)।
गिल्स एसओ- बुराई को रोकना '

कोई भी शेल ठीक काम नहीं कर रहा है (विभाजन से पहले और बाद में)। समस्या यह है कि gnome-sessionयह वैरिएबल सेट नहीं है।
मैकीज पीचोटका

जवाबों:


21

सरल तरीका यह है कि एक टाइम मशीन का आविष्कार किया जाए, विभिन्न लोगों का दौरा किया जाए जो शेल स्टार्टअप फाइलों को तैयार करते हैं और उन्हें तीन साल के बीच साफ-साफ अंतर बताने के लिए कहते हैं:

  • सत्र सेटअप, जैसे पर्यावरण चर;
  • सत्र की शुरूआत, जैसे, कमांड-लाइन शेल या विंडो मैनेजर शुरू करना या चलाना startx;
  • शेल आरंभीकरण, जैसे उपनाम, शीघ्र, कुंजी बाइंडिंग।

यह एक पोर्टेबल तरह से सत्र बनाम खोल सही पाने के लिए भी मुश्किल नहीं है: लॉगिन समय प्रारंभ में चला जाता है .profile(या .zprofile, या .login), खोल प्रारंभ में चला जाता है .bashrcया .zshrc। मैंने पहले लिखा है .bash_profile, zsh बनाम अन्य गोले , पोर्टेबिलिटी के बारे में अधिक (ज्यादातर बैश के बारे में) , जो पढ़ता है उसके बारे में अधिक.profile

शेष समस्या सत्र सेटअप और सत्र लॉन्चिंग के बीच भिन्न है। ज्यादातर मामलों में, ~/.profileजब आप लॉग इन करते हैं और दोनों के रूप में दोगुना हो सकता है , तब निष्पादित किया जाता है, लेकिन कुछ अपवाद हैं:

  • यदि आपका लॉगिन शेल (t) csh या zsh है, ~/.loginऔर ~/.zprofileइसके स्थान पर खट्टा है ~/.profile। बैश और के लिए Ditto ~/.bash_profile, लेकिन यह आसानी से सोर्सिंग द्वारा हल किया जाता ~/.profileहै ~/.bash_profile
  • यदि आप एक डिस्प्ले मैनेजर (xdm, gdm, kdm,…) के तहत लॉग इन करते हैं, तो आपका ~/.profileपढ़ा हुआ, प्रोग्राम के संस्करण पर निर्भर करता है, आपके वितरण (लिनक्स या अन्य) पर, और आप किस सत्र का चयन करते हैं।
    • यदि आप अपने लिए एक सत्र शुरू करने के लिए प्रदर्शन प्रबंधक पर भरोसा करते हैं, तो आपको .profileपर्यावरण चर सेट करना होगा , लेकिन सत्र शुरू नहीं करना चाहिए (उदाहरण के लिए विंडो प्रबंधक)।
    • X सत्र के लिए पारंपरिक कॉन्फ़िगरेशन फ़ाइल ~/.xsession, सत्र सेटअप और सत्र लॉन्च करना दोनों है। तो फ़ाइल अनिवार्य रूप से हो सकती है . ~/.xsession; . ~/.xinitrc। कुछ वितरण स्रोत ~/.profileपहले ~/.xsession। आधुनिक वितरण केवल स्रोत ~/.xsessionजब आप डिस्प्ले मैनेजर से "कस्टम" सत्र का चयन करते हैं, और ऐसा सत्र हमेशा उपलब्ध नहीं होता है।
    • आपके सत्र प्रबंधक के पास वातावरण चर सेट करने का अपना तरीका हो सकता है। (यह आपके डेस्कटॉप वातावरण का एक वैकल्पिक हिस्सा है, आपके द्वारा कॉन्फ़िगरेशन फ़ाइल के माध्यम से या लॉग इन करते समय सत्र प्रकार का चयन करके; प्रदर्शन प्रबंधक द्वारा प्रदान किए गए सत्र स्टार्टअप स्क्रिप्ट के साथ इसे भ्रमित न करें, जो आपके उपयोगकर्ता के तहत निष्पादित होते हैं लेकिन सिस्टम-वाइड आधार पर चुना गया। हां, यह गड़बड़ है।)

संक्षेप में, ~/.profileपर्यावरण चर के लिए सही जगह है। यदि यह पढ़ा नहीं गया है, तो इसे सोर्स करने का प्रयास करें ~/.xsession(और वहां से अपने एक्स प्रोग्राम शुरू करें), या सिस्टम-विशिष्ट विधि की तलाश करें (जो आपके वितरण पर निर्भर हो सकता है, यदि कोई हो, तो प्रबंधक प्रदर्शन प्रबंधक और डेस्कटॉप पर्यावरण सत्र प्रबंधक)।


.xsessionवह फाइल थी जिसकी मुझे तलाश थी।
मैकिज पीचोटका

1
मैं आपके सारांश को छोड़कर हर चीज से दृढ़ता से सहमत हूं। मुझे नहीं लगता कि आपने इस बिंदु को स्थापित किया है। यदि आपके .profileस्रोत .bashrcया समान हैं, तो आप .bashrcन केवल लॉगिन सत्रों के लिए, बल्कि अलग-अलग सेटिंग्स की आवश्यकता वाले नए गोले के लिए पर्यावरण चर सेट कर सकते हैं, जैसे यदि आप एक xtermसे शुरू करते हैं gnome-terminalऔर अलग चाहते हैं dircolors
मिकेल

यदि आप पर्यावरण चर सेट करते हैं .bashrc, तो वे आपकी पिछली सेटिंग्स को ओवरराइड करेंगे। उदाहरण के लिए, यदि आपने विशेष परिवेश चर के साथ एक स्क्रीन या Tmux उदाहरण शुरू किया है, तो आप जो कुछ भी सेट .bashrcकरेंगे , वह इन सेटिंग्स को ओवरराइड करेगा। LS_COLORSएक विशेष मामला है क्योंकि यह वास्तव में एक प्रति-टर्मिनल सेटिंग है; आदर्श रूप से इसे टर्मिनल एमुलेटर द्वारा सेट किया जाना चाहिए, और इसे शेल आरसी फ़ाइल में सेट करना एक सर्वोत्तम प्रयास है।
गिल्स एसओ- बुराई को रोकना '

1

Gentoo प्रलेखन में Gentoo Linux स्थानीयकरण गाइड लेख है । अध्याय 3 स्थान निर्धारित करने के बारे में है।

अधिकांश आमतौर पर उपयोगकर्ता केवल वैश्विक आधार पर LANG चर सेट करते हैं। यह उदाहरण एक यूनिकोड जर्मन लोकेल के लिए है:

कोड लिस्टिंग 3.1: डिफ़ॉल्ट सिस्टम लोकेल को अंदर सेट करना /etc/env.d/02locale

LANG="en_GB.UTF-8"

मेरे Gentoo LANGमें इस फ़ाइल में सेट है और सब कुछ ठीक से काम कर रहा है ...

pbm@tauri ~ $ cat /etc/env.d/02locale 
LANG="pl_PL.UTF-8"

pbm@tauri ~ $ locale
LANG=pl_PL.UTF-8
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=

खबरदार कि आपने जो हिस्सा उद्धृत किया है वह ठीक है, लेकिन गाइड एक पर्यावरण चर स्थापित करने की भी सिफारिश .bashrcकरता है, जो गलत है (मेरे उत्तर देखें और विशेष रूप से superuser.com/questions/217431 )।
गिल्स एसओ- बुराई को रोकना '

इतनी विस्तृत जानकारी के लिए धन्यवाद ... :) मैंने कभी भी उस .bashrc भाग का उपयोग नहीं किया है - सेटिंग्स env.dअधिक सार्वभौमिक हैं।
pbm

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