क्या मेरे पास कुछ सेटिंग्स हैं जो मेरे सभी उपयोगकर्ताओं के लिए सार्वभौमिक हैं?
क्या मेरे पास कुछ सेटिंग्स हैं जो मेरे सभी उपयोगकर्ताओं के लिए सार्वभौमिक हैं?
जवाबों:
साथ ही साथ /etc/profile
जो दूसरों ने उल्लेख किया है, कुछ लिनक्स सिस्टम अब एक निर्देशिका का उपयोग करते हैं /etc/profile.d/
; .sh
वहां की कोई भी फाइल खटाई में पड़ जाएगी /etc/profile
। यह इन फ़ाइलों में अपने कस्टम वातावरण सामान रखने के लिए सिर्फ संपादित करने की तुलना में थोड़ा neater है /etc/profile
।
यदि आपके LinuxOS में यह फाइल है:
/etc/environment
आप इसे सभी उपयोगकर्ताओं के लिए स्थायी रूप से पर्यावरण चर सेट करने के लिए उपयोग कर सकते हैं।
इससे निकाला गया: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html
यदि सभी लॉगिन सेवाएं PAM का उपयोग करती हैं , और सभी लॉगिन सेवाओं session required pam_env.so
में उनकी संबंधित /etc/pam.d/*
कॉन्फ़िगरेशन फ़ाइलें होती हैं, तो सभी लॉगिन सत्रों में कुछ पर्यावरण चर होंगे जैसा कि pam_env
कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट है ।
अधिकांश आधुनिक लिनक्स वितरणों पर, यह सब डिफ़ॉल्ट रूप से होता है - बस अपने वांछित वैश्विक पर्यावरण चर को जोड़ें /etc/security/pam_env.conf
।
यह उपयोगकर्ता के शेल की परवाह किए बिना काम करता है, और ग्राफिकल लॉगिन के लिए भी काम करता है (यदि xdm / kdm / gdm / entry /… इस तरह सेट किया गया है)।
echo foo>/home/me/bar
और रिबूट (और फिर से लॉग इन करता हूं ), तो वह फ़ाइल बनाई नहीं जाती है। (इसका परीक्षण करने का एक और अधिक सुंदर तरीका है, लेकिन मैं यहां टिप्पणी करने से पहले निश्चित होना चाहता था।)
आश्चर्यजनक रूप से, यूनिक्स और लिनक्स वास्तव में वैश्विक पर्यावरण चर सेट करने के लिए जगह नहीं है। सबसे अच्छा आप किसी भी विशिष्ट शेल के लिए साइट-विशिष्ट आरंभीकरण की व्यवस्था कर सकते हैं।
यदि आप इसे डालते हैं, तो यह /etc/profile
अधिकांश पॉज़िक्स-संगत शेल उपयोगकर्ताओं के लिए चीजों की देखभाल करेगा। यह गैर-महत्वपूर्ण उद्देश्यों के लिए संभवतः "काफी अच्छा" है।
लेकिन शेल csh
या tcsh
शेल वाला कोई भी व्यक्ति इसे नहीं देखेगा, और मुझे विश्वास नहीं है कि csh
इसके पास एक वैश्विक आरंभीकरण फ़ाइल है।
/etc/environment
वास्तव में मेरे लिए रूट वेरिएबल के रूप में पर्यावरण चर सेट करना प्रतीत होता है। मुझे पता है कि /etc/environment
यह अमेज़ॅन लाइनक्स और ubuntu पर है। अगर csh, tsh, या zsh के लिए काम करता है, तो मुझे यह जांचने को नहीं मिला।
बैश मैनपेज के कुछ दिलचस्प अंश:
जब बैश को एक इंटरेक्टिव लॉगिन शेल के रूप में या
--login
विकल्प के साथ एक गैर-इंटरैक्टिव शेल के रूप में लागू किया जाता है , तो यह पहले फ़ाइल से कमांड को पढ़ता है और निष्पादित करता है/etc/profile
, यदि वह फ़ाइल मौजूद है। उस फ़ाइल को पढ़ने के बाद, यह उस क्रम में , और , के लिए लग रहा है~/.bash_profile
,~/.bash_login
और~/.profile
पहले से मौजूद आदेशों को पढ़ता है और निष्पादित करता है और पठनीय है।--noprofile
विकल्प इस्तेमाल किया जा सकता है जब खोल इस व्यवहार को बाधित करने के लिए शुरू कर दिया है।
...
जब एक इंटरेक्टिव शेल जो एक लॉगिन शेल नहीं है, तो bash पढ़ता है और कमांड से निष्पादित करता है/etc/bash.bashrc
और~/.bashrc
, अगर ये फाइलें मौजूद हैं।--norc
विकल्प का उपयोग करके इसे बाधित किया जा सकता है ।--rcfile
फ़ाइल विकल्प पढ़ सकते हैं और के बजाय फ़ाइल से आदेश पर अमल करने के लिए पार्टी के लिए बाध्य करेगा/etc/bash.bashrc
और~/.bashrc
।
तो एक नज़र डालें /etc/profile
या /etc/bash.bashrc
, ये फाइलें वैश्विक सेटिंग्स के लिए सही स्थान हैं। एक एनवायरनमेंट वैरिएबल सेट करने के लिए उनमें कुछ इस तरह रखें:
export MY_VAR=xxx
PAM का उपयोग निष्पादन योग्य है।
# modify the display PAM
$ cat /etc/security/pam_env.conf
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc DEFAULT=/var/tmp/myproject
लिनक्स कर्नेल के तहत चलने वाली प्रत्येक प्रक्रिया को अपने स्वयं के, अद्वितीय वातावरण प्राप्त होता है जो इसे अपने माता-पिता से विरासत में मिलता है। इस मामले में, माता-पिता या तो स्वयं एक शेल होगा (एक उप शेल spawning), या 'लॉगिन' प्रोग्राम (एक विशिष्ट सिस्टम पर)।
जैसा कि प्रत्येक प्रक्रिया 'पर्यावरण संरक्षित है, हर चल रही प्रक्रिया के लिए एक पर्यावरण चर को' इंजेक्ट 'करने का कोई तरीका नहीं है, इसलिए भले ही आप डिफ़ॉल्ट शेल .rc / प्रोफ़ाइल हों, तब तक यह प्रभावी नहीं होगा जब तक कि प्रत्येक प्रक्रिया से बाहर नहीं निकलता और पुनः लोड नहीं होता है। इसकी स्टार्ट अप सेटिंग्स।
किसी विशेष शेल के लिए डिफ़ॉल्ट स्टार्ट अप चर को संशोधित करने के लिए / etc / में देखें। बस एहसास है कि उपयोगकर्ता (और अक्सर कर सकते हैं) उन्हें अपनी व्यक्तिगत सेटिंग्स में बदल सकते हैं।
यूनिक्स को सीमा के भीतर उपयोगकर्ता का पालन करने के लिए डिज़ाइन किया गया है।
एनबी : बैश आपके सिस्टम पर एकमात्र शेल नहीं है। ध्यान दें कि क्या / बिन / श प्रतीकात्मक लिंक वास्तव में इंगित करता है। कई प्रणालियों पर, यह वास्तव में पानी का छींटा हो सकता है (डिफ़ॉल्ट रूप से, कोई विशेष आह्वान के साथ) सही ढंग से सही नहीं है। इसलिए, आपको दोनों डिफॉल्ट्स को संशोधित करने के लिए ध्यान रखना चाहिए , या स्क्रिप्ट जो कि / bin / sh से शुरू होती हैं, आपके वैश्विक डिफॉल्ट को इनहेरिट नहीं करेंगी। इसी तरह, वाक्यविन्यास से बचने के लिए ध्यान रखें कि दोनों को एड करते समय केवल बैश समझ में आता है avoiding bashisms
।