पर्यावरण चर घोषित करने के लिए कहां?


59

इसके लिए सही स्थान क्या हैं:

  1. वैश्विक पर्यावरण चर का मतलब सभी उपयोगकर्ताओं को प्रभावित करना है?
  2. उपयोगकर्ता-विशिष्ट पर्यावरण चर?

जवाबों:


16

मुझे लगता है कि पर्यावरण चर पर समुदाय विकी पृष्ठ आपको छांटने में मदद करेगा


2
समस्या यह है कि लिंक किए गए दस्तावेज़ उपयोगकर्ता-निर्दिष्ट चर के हिस्से में भ्रमित और / या सादे गलत हैं। मैं अभी भी इसे करने के लिए एक खोल-अज्ञेय तरीका खोजने की कोशिश कर रहा हूं। $ HOME / .profile शायद सबसे अच्छी शर्त है ...
Rmano

16
कृपया टेक्स्ट पेस्ट करें या लिंक की गई सामग्री का स्नैपशॉट लें - यह भविष्य में उपलब्ध नहीं हो सकता है!
नाम जी वीयू

4
जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
थॉमस वार्ड

75

Sagarchalise के उत्तर में जोड़ने के लिए, मैं सारांशित कर सकता हूं कि सेटिंग्स के लिए उपयुक्त स्थानों के रूप में लिंक क्या सुझाता है।

वैश्विक सेटिंग्स के लिए, सिस्टम-वाइड वातावरण चर

  • उपयोग /etc/environment
  • का उपयोग न करें /etc/profileया/etc/bash.bashrc

पृष्ठ से:

/etc/environment[...] विशेष रूप से सिस्टम-वाइड वातावरण चर सेटिंग्स के लिए है। यह एक स्क्रिप्ट फ़ाइल नहीं है, बल्कि असाइनमेंट एक्सप्रेशंस, प्रति पंक्ति एक है। विशेष रूप से, यह फ़ाइल सिस्टम-वाइड लोकेल और पथ सेटिंग्स को संग्रहीत करती है।

उपयोग करना जाने के /etc/profileलिए एक बहुत यूनिक्स-वाई तरीका है, लेकिन उबंटू के तहत इसकी कार्यक्षमता बहुत कम है। यह केवल इंगित करने /etc/bash.bashrcऔर प्रविष्टियों को एकत्रित करने के लिए मौजूद है /etc/profile.d

मेरे सिस्टम पर, profile.d में एकमात्र दिलचस्प प्रविष्टि प्रविष्टि है /etc/profile.d/bash_completion.sh

स्थानीय या प्रति-उपयोगकर्ता सेटिंग्स के लिए

उबंटू पृष्ठ के पिछले संस्करण की सिफारिश की गई है ~/.pam_environment, लेकिन वर्तमान में यह पृष्ठ बताता है कि यदि यह काम नहीं करता है, तो आपको उपयोग करना चाहिए

  • ~/.profile - यह पर्यावरण चर असाइनमेंट रखने के लिए शायद सबसे अच्छी फ़ाइल है, क्योंकि यह स्टार्टअप प्रक्रिया डेस्कटॉप सत्र के दौरान डिस्प्लेमैनगर द्वारा स्वचालित रूप से निष्पादित हो जाता है और साथ ही साथ लॉगिन शेल द्वारा जब एक लॉग-इन टेक्स्टुअल कंसोल से होता है।

  • ~/.bash_profileया ~./bash_login- यदि इनमें से कोई एक मौजूद है, ~/.profileतो बैश एक लॉगिन शेल के रूप में शुरू होने के बजाय इसे निष्पादित करता है । बैश का चुनाव करेगा ~/.bash_profileकरने के लिए ~/.bash_login। [...] ये फ़ाइलें डिफ़ॉल्ट रूप से चित्रमय सत्र को प्रभावित नहीं करेंगी। "

  • ~/.bashrc - "... चर सेट करने के लिए सबसे आसान जगह हो सकती है"।

1
कौन से प्रोग्राम पढ़े /etc/environmentऔर कब? यह क्रोन के साथ काम करने के लिए प्रतीत नहीं होता है, यहां तक ​​कि जब भी उपयोग किया जाता हैSHELL=/bin/bash
SystemParadox

1
ऐसा प्रतीत होता है कि / etc / environment PAM का हिस्सा है, जिसका अर्थ है कि उसे सभी प्रक्रियाओं के लिए डिफ़ॉल्ट वातावरण सेट करना चाहिए। क्रोन विशेष है (जो कि टूटा हुआ है) विशेष रूप से इस वातावरण को स्वयं के साथ अधिलेखित करने के लिए।
SystemParadox

तो कैसे .bashrc व्यवहार करता है? bash_profile के बाद? लाभकारी के बजाय
खोलता है

1
@opensas आपको शायद एक अलग प्रश्न के रूप में पूछना चाहिए, इस एक या उत्तर का संदर्भ देते हुए।
बेलाक्वा

@belacqua कहते हैं कि मैं 2 या अधिक वातावरण चर को जोड़ने की जरूरत है की सुविधा देता है /etc/environmentकी तरह है JAVA_HOME="/opt/java" और ANT_HOME="/opt/ant" कैसे यह करने के लिए
Kasun Siyambalapitiya

7

तुम्हें मिल गया है:

/ etc / प्रोफाइल: बॉर्न शेल (sh (1)) और बॉर्न संगत गोले (bash (1), ksh (1), ash (1), ...) के लिए सिस्टम-वाइड .profile फ़ाइल।

जो ल्युसिड और मेवरिक में चलता है

/etc/profile.d/*.sh

यदि मौजूद है, और यदि उपयोगकर्ता का शेल बैश है:

/etc/bash.bashrc

उपयोगकर्ता पर्यावरण के लिए, शेल के लिए एक भ्रामक सरणी है और क्या इसे "लॉगिन शेल" माना जाता है। यदि शेल बैश है:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

श / डैश के लिए:

$HOME/.profile

zsh के लिए, मैं इस बारे में समझ बनाने की कोशिश करने वाला नहीं हूं ।


5

Https://help.ubuntu.com/community/EnvironmentVariables पर सिफारिश की गई है :

  1. वैश्विक पर्यावरण चर का मतलब सभी उपयोगकर्ताओं को प्रभावित करना चाहिए /etc/environment

  2. उपयोगकर्ता-विशिष्ट वातावरण चर सेट किया जाना चाहिए ~/.pam_environment

उबंटू पर पर्यावरण चर स्थापित करने के लिए प्रोफ़ाइल और आरसी फ़ाइलों से बचें। उन्होंने मेरे लायक होने की तुलना में मुझे अधिक सिरदर्द दिया है।

यह हालांकि कहा गया आसान है;)

यह संभव है कि आप उसी कॉन्फ़िगरेशन गैप में चल सकते हैं जो मेरे लिए मौजूद था। नीचे एन्क्रिप्टेड घर के लिए समाधान देखें।

मेरा ~/.pam_environment:

PATH            DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK        DEFAULT=${HOME}/Applications/jdk

क्यों बदसूरत स्थिर पथ? ${PATH}मेरे लिए काम नहीं करेगा। मैंने अपने लॉगिन को कई बार इसके चारों ओर काम करने की कोशिश की, इसलिए मैं चूक की बदसूरत स्थिर प्रतिलिपि के साथ चिपका रहा हूँ :)

एन्क्रिप्टेड होम फोल्डर्स के लिए समाधान

उबंटू रिलीज में और सटीक 12.04 बीटा 2 को शामिल करने के लिए, यदि आप एक एन्क्रिप्टेड होम डायरेक्टरी का उपयोग कर रहे हैं तो आपको /etc/pam.d/common-sessionइसे लोड करने के लिए संशोधित करना होगा ~/.pam_environment। यह समाधान स्पष्ट रूप से पहले रिलीज के लिए काम करता है, लेकिन मैंने इसका परीक्षण नहीं किया है।

Guenther Montag (g-montag) ने 2010-08-19 को लिखा:

यह एन्क्रिप्टेड होम निर्देशिकाओं के साथ एक मुद्दा लगता है। मैंने कहा

सत्र आवश्यक pam_env.so

/etc/pam.d/common-session के अंत में और अब ~ / .pam_environment पढ़ा जाता है। एन्क्रिप्टेड होम निर्देशिकाओं के बिना एक अन्य प्रणाली पर (10.04 भी) काम की आवश्यकता नहीं है। शायद मेरे मामले में, सिस्टम डिक्रिप्ट होने से पहले ~ / .pam_environment पढ़ने की कोशिश करता है।

सुपर यूजर पर मेरे जवाब से अनुकूलित: https://superuser.com/a/408373/66856


यह अभी भी गलत है: ${HOME}या तो काम नहीं करेगा। में विस्तार नहीं है .pam_environment
detly

2
@ विस्तृत रूप से इसमें विस्तार है .pam_environment, लेकिन HOMEयह आमतौर पर जल्दी सेट नहीं होता है। यदि वह पंक्ति पढ़ी थी DEFAULT=${PATH}/Applications/jdk, तो आपने PATHउसमें सम्मिलित मूल्य देखा होगा।
मूरू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.