(यह शायद overkill है, लेकिन शायद यह उपयोगी हो जाएगा)
कुछ बातें:: बस .bash_profile
में जोड़ना
पर्यावरण चर कुछ हद तक सार्वजनिक कर रहे हैं, और कर सकते हैं अन्य प्रक्रियाओं द्वारा आसानी से देखा जा सकता है जैसे कि ps(1)
कमांड (जैसे ps e $$
बैश में) या /proc/*/environ
पर एक विकल्प जोड़ा गया है, हालांकि दोनों आधुनिक सिस्टम पर कम से कम उसी उपयोगकर्ता (या रूट) तक सीमित हैं। यदि आपके पास एक और काफी आसान विकल्प उपलब्ध है तो उन पर भरोसा न करें।
~/.bashrc
वातावरण चर के लिए गलत जगह है, क्योंकि वे ~/.bash_login
में लॉग इन पर एक बार गणना की जा सकती .bash_profile ~/.profile
, अपने उपयोग के आधार पर है, ~ /, या, और सभी वंशज गोले करने के लिए नीचे पारित कर दिया। इसके विपरीत, ~/.bashrc
क्रियाओं को प्रत्येक खोल आमंत्रण पर पुन: संकलित किया जाता है (जब तक कि स्पष्ट रूप से अक्षम नहीं किया जाता)।
~/.profile
में बैश कोड रखना अन्य श-वंशज गोले और गैर खोल उपकरण जो कि फ़ाइल पढ़ने की कोशिश भ्रमित कर सकते हैं, तो होने बैश विशेष ~/.bash_login
या -_profile बैश-विशिष्ट बातें शामिल है, और के लिए . ~/.profile
का उपयोग कर अधिक सामान्य चीजें (कम, संपादक, दृश्य, LC_COLLATE, LS_COLORS, आदि), अन्य उपकरणों के लिए मित्रवत है।
~/.profile
में पर्यावरण चर पुराने बोर्न शेल फॉर्म (VAR=value ; export VAR
) में होना चाहिए। लिनक्स पर यह आमतौर पर महत्वपूर्ण नहीं होता है, हालांकि अन्य यूनिक्सन पर यह एक बड़ा मुद्दा हो सकता है जब "sh" का पुराना संस्करण उन्हें पढ़ने की कोशिश करता है।
कुछ एक्स सत्र केवल ~/.profile
पढ़ेंगे, ~/.bash_login
या ऊपर वर्णित अन्य लोग नहीं। कुछ ~/.xsession
फ़ाइल को . $HOME/.profile
के लिए संशोधित करने की आवश्यकता होगी यदि यह पहले से ही किसी भी तरह से नहीं है।
सिस्टम-व्यापी सेटिंग्स को /etc/profile.d/similar-to-heroku.sh
जैसे कुछ में रखा जाएगा। ध्यान दें कि ".sh" केवल तब मौजूद है जब फ़ाइल का उपयोग "।" के साथ किया जाएगा। या "स्रोत" - खोल स्क्रिप्ट कभी में यूनिक्स/लिनक्स के किसी भी रूप में कमांड-नाम एक्सटेंशन होना चाहिए।
अधिकांश पर्यावरण चर को हटा दिया जाता है जब एक sudo
एस रूट करने के लिए, यबाकोस बताते हैं। इसी तरह के मुद्दे crontabs, नौकरियों, आदि में दिखाई देते हैं। संदेह में, env | sort > /tmp/envvars
जोड़ना या एक संदिग्ध स्क्रिप्ट की तरह वास्तव में डिबगिंग में मदद कर सकते हैं।
पता लगाएं कि कुछ वितरणों में शैल स्टार्टअप स्क्रिप्ट हैं इसलिए वे वास्तव में बाश (1) मैनुअल पेज में दिए गए क्रम को अस्वीकार कर देते हैं। जब भी आपको एक डिफ़ॉल्ट उपयोगकर्ता ~/.profile
$ BASH या $ BASH_VERSION की जांच हो रही है, तो आप इनमें से किसी एक में हो सकते हैं, उम ..., "रोचक" वातावरण, और उन्हें यह पता लगाने के लिए पढ़ना पड़ सकता है कि नियंत्रण प्रवाह कहां जाता है (वे एक बैश-विशिष्ट ~/.bash_profile
या ~/.bash_login
का उपयोग करना चाहिए, जिसमें संदर्भ द्वारा अधिक सामान्य ~/.profile
शामिल है, इस प्रकार बैश निष्पादन योग्य को खोल कोड में $ BASH चेक लिखने के बजाय काम करने दें)।
~/.bash_profile
(या ~/.bash_login
) निश्चित रूप से . ~/.bashrc
शामिल कर सकते हैं, लेकिन वातावरण चर ~/.bash_profile
में हैं (यदि पार्टी विशेष) या ~/.profile
(इसे से शामिल तुम वहाँ में सब कुछ के लिए इस तंत्र का उपयोग करते हुए और हो रहे हैं envvars) जैसा कि डेविट कहते हैं, बस . ~/.bashrc
डालने के बाद याद रखें।bash_profile का . ~/.profile
और अन्य पर्यावरण चर, ताकि ~/.bashrc
दोनों लॉगिन और अन्य सभी आमंत्रण पहले से सेट किए जा रहे envvars पर भरोसा कर सकें। एक उदाहरण ~/.bash_profile
:
# .bash_profile
[ -r ~/.profile ] && . ~/.profile # envvars
[ -r ~/.bashrc ] && . ~/.bashrc # functions, per-tty settings, etc.
#---eof
किसी भी बॉर्न शैल वंशज में [ -r ... ] && ...
काम करता है और त्रुटियों नहीं कारण नहीं है/अगर .profile याद आ रही है रोकता (मैं व्यक्तिगत रूप से, साथ ही एक ~/.profile.d/*.sh
सेटअप है, लेकिन यह एक पूरी तरह से के रूप में छोड़ दिया जाता है वैकल्पिक व्यायाम)।
नोट बैश कि केवल जो यह पाता है इन तीन के पहले फ़ाइल में लिखा है:
~/.bash_profile
~/.bash_login
~/.profile
... इसलिए एक बार आप है कि एक, अन्य दो के उपयोग के लिए पूरी तरह से उपयोगकर्ता के नियंत्रण में है, बैश के परिप्रेक्ष्य से।
एक लॉगिन एक रिबूट जब के बाद होता है:
कि फ़ाइल में पहली पंक्ति से पहले इन दो पंक्तियों जोड़ें: प्रोफ़ाइल फ़ाइलें
पथ चलाने इस आदेश को खोजने के लिए nginx एक आरसीडीडी स्क्रिप्ट द्वारा शुरू किया गया है? –