पर्यावरण चर को स्थायी रूप से कैसे सेट करें


227

मेरे चर हैं

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64

इन चरों को स्थायी रूप से कैसे बचाया जाए?


2
इस पृष्ठ पर अन्य उत्तर महान हैं। एक छोटी सिफारिश पथ के /usr/lib/oracle/11.2/client64/libतहत एक नई फ़ाइल में जोड़ने की होगी /etc/ld.so.conf.d/। फिर आपको LD_LIBRARY_PATH सेट करने की आवश्यकता नहीं है, यहां भी देखें ।
इलियट फ्रिश

1
सावधान, शुरू में दिखाई देने की तुलना में इस कहानी में अधिक है। मैं आपको अपना उत्तर जाँचने के लिए आमंत्रित करता हूँ।
jasonleonhard

जवाबों:


252

आप इसे फ़ाइल .profileया अपनी लॉगिन शेल प्रोफ़ाइल फ़ाइल (अपने होम डायरेक्टरी में स्थित) में जोड़ सकते हैं ।

"स्थायी रूप से" पर्यावरण चर को बदलने के लिए आपको कम से कम इन स्थितियों पर विचार करना होगा:

  1. लॉगिन / गैर-लॉगिन शेल
  2. इंटरएक्टिव / गैर-इंटरैक्टिव शेल

दे घुमा के

  1. लॉगिन शेल के रूप में बैश लोड होगा /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profileक्रम में
  2. गैर-लॉगिन इंटरेक्टिव शेल के रूप में बैश लोड होगा ~/.bashrc
  3. गैर-लॉगिन गैर-इंटरैक्टिव शेल के रूप में बैश करें, पर्यावरण चर में निर्दिष्ट कॉन्फ़िगरेशन को लोड करेगा $BASH_ENV
$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

zsh

$EDITOR ~/.zprofile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

क्ष

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

सीमा

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib     
     ORACLE_HOME=/usr/lib/oracle/11.2/client64
     export LD_LIBRARY_PATH ORACLE_HOME

csh या tsh

$EDITOR ~/.login
#add lines at the bottom of the file:  
     setenv LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
     setenv ORACLE_HOME /usr/lib/oracle/11.2/client64

आप इसे सभी उपयोगकर्ताओं के लिए स्थायी बनाना चाहते हैं, तो आप के तहत इसी फ़ाइलों को संपादित कर सकते हैं /etc/, यानी /etc/profileबॉर्न की तरह गोले, के लिए /etc/csh.loginके लिए (टी) csh, और /etc/zsh/zprofileऔर /etc/zsh/zshrczsh के लिए।

एक अन्य विकल्प का उपयोग करना है /etc/environment, जो लिनक्स सिस्टम पर PAM मॉड्यूल द्वारा पढ़ा जाता है pam_envऔर केवल सरल असाइनमेंट का समर्थन करता है, न कि शेल-शैली के विस्तार का। ( इस पर डेबियन गाइड देखें ।)

इन फ़ाइलों में पहले से ही कुछ असाइनमेंट होने की संभावना है, इसलिए आप अपनी फ़ाइल में पहले से मौजूद सिंटैक्स का पालन करें।

परिवर्तनों को लागू करने के लिए, शेल को पुनः आरंभ करें और उपयोगकर्ता को फिर से खोलें।

यदि आपको सिस्टम वाइड एन्वायर्नमेंट वैरिएबल जोड़ने की आवश्यकता है, तो अब /etc/profile.dवह फोल्डर है जिसमें वेरिएबल को इनिशियलाइज़ करने के लिए sh स्क्रिप्ट है।
आप अपनी श स्क्रिप्ट को अपने यहां निर्यात किए गए सभी चर के साथ रख सकते हैं।
हालांकि यह डेबियन पर env करने के लिए चर जोड़ने के एक मानक तरीके के रूप में उपयोग नहीं किया जाना चाहिए carefull होना।


इस .profileमें /etc/लेकिन मुझे नहीं इस में चर सेट करने का तरीका है .profileकृपया मुझे बताओ
user3021349

6
.profileआपके घर में निर्देशिका नहीं है/etc/
कीवी

1
[Admin@localhost etc]$ cat ~/.profile cat: /home/Admin/.profile: No such file or directory [Admin@localhost etc]$
user3021349

4
@ user3021349 मेरा मतलब असभ्य नहीं है, लेकिन अगर आपको लगता है कि एक सेकंड में आप एक अलग संपादक का उपयोग कर सकते हैं जिसे आप मास्टर करते हैं। :wqआदेश फ़ाइल और vi में बाहर निकलने के लिखने के लिए टाइप करने के लिए मत भूलना है escसे पहले
Kiwy

3
आपको crontabस्क्रिप्ट में पर्यावरण चर पर विचार करना होगा । जब कोई crontabस्क्रिप्ट चल रही हो, तो इनमें से किसी भी स्थान को देखा नहीं जाएगा ।
यिंग

71

यदि सभी उपयोगकर्ताओं / गोले के लिए करना है, तो डिस्ट्रो के आधार पर आप उपयोग कर सकते हैं /etc/environmentया /etc/profile/etc/profile.dयदि मौजूद है तो एक नई फ़ाइल बनाना बेहतर हो सकता है, क्योंकि इसमें पैकेजिंग सिस्टम द्वारा किए गए अपडेट के साथ संघर्ष की संभावना कम होगी।

में /etc/environment, चर आमतौर पर के साथ स्थापित कर रहे हैं name=value, जैसे:

ORACLE_HOME=/usr/lib/oracle/11.2/client64

इसमें /etc/profile, आपको इसका उपयोग करना होगा exportक्योंकि यह एक स्क्रिप्ट है, उदाहरण के लिए:

export ORACLE_HOME=/usr/lib/oracle/11.2/client64

उसी के तहत एक फ़ाइल के लिए चला जाता है /etc/profile.d, वहाँ भी नामकरण प्रतिबंध हो सकता है जो काम करने के लिए फ़ाइल के लिए मिलना चाहिए। डेबियन पर, फ़ाइल में एक्सटेंशन होना चाहिए .sh(हालांकि इसे खट्टा होने के बाद एक धमाकेदार रेखा या निष्पादन योग्य अनुमति की आवश्यकता नहीं है)। अपने डिस्ट्रो डॉक्यूमेंट की जांच करें या /etc/profileस्क्रिप्ट देखें कि ये फाइलें कैसे भरी हुई हैं।

यह भी ध्यान दें कि LD_LIBRARY_PATHस्थायी रूप से सेटिंग संभावित रूप से समस्याग्रस्त है , जिसमें सुरक्षा जोखिम भी शामिल है। एक विकल्प के रूप में, मैं LD_LIBRARY_PATHदौड़ने से पहले इसकी आवश्यकता वाले प्रत्येक कार्यक्रम के लिए कमांड लाइन की शुरुआत को शुरू करने के लिए कोई रास्ता खोजने का सुझाव दूंगा । उदाहरण के लिए:

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib myprog

ऐसा करने का एक तरीका प्रोग्राम को चलाने के लिए एक आवरण स्क्रिप्ट का उपयोग करना है। आप इसे अपने प्रोग्राम के समान नाम दे सकते हैं और इसे अपने प्रोग्राम के स्थान से पहले/usr/local/bin या कहीं भी रख सकते हैं । यहाँ एक उदाहरण स्क्रिप्ट है (स्क्रिप्ट को मत भूलना ):PATHchmod +x

#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib /real/location/of/myprog "$@"

इसलिए, यदि मैंने अपनी environmentफ़ाइल में मूल्य जोड़े जोड़े हैं , तो क्या कारण हैं? उदाहरण के लिए, vi संपादक (सफलतापूर्वक लिखे गए परिवर्तन) से बाहर निकलने के बाद, मैं लिखने echo $MY_NEW_VARIABLEऔर इसे प्रिंट आउट देखने की उम्मीद कर रहा हूं - EDIT: मैं देख रहा हूं कि अगर मैं एक नया कमांड शेल लॉन्च करता हूं
bkwdesign

अगर यह एक व्यक्तिगत मुद्दा है या क्या है, तो अनिश्चित, लेकिन मुझे यह सेट करने के बाद अपने ओएस को रिबूट करना था /etc/environment, भले ही मैंने बैश टर्मिनल को फिर से शुरू किया हो या टाइप किया हो source /etc/environment। इसलिए यदि आपके पास ऐसे मुद्दे हैं, जहां पर्यावरण चर स्थिर नहीं है, तो रिबूट करने का प्रयास करें।
ब्लेयरग 23

@bkwdesign @ Blairg23, /etc/environmentएक स्क्रिप्ट नहीं है, इसलिए इसे सोर्स नहीं किया जा सकता है। यह PAM द्वारा लॉगिन समय (और कुछ मुट्ठी भर अन्य सिस्टम इवेंट्स) में लोड किया गया है, ताकि आप $ su <your username here>उस अलग-थलग सत्र में नए मानों को लेने के लिए किसी लॉगआउट / लॉगिन या टर्मिनल में एक नया लॉगिन सत्र चला सकें । आपके द्वारा बाहर निकलते ही मान गायब हो जाएंगे, इसलिए यह पूरी तरह से लॉगआउट / लॉगिन करने के लिए शायद कम त्रुटि वाला है।
एरोनडिएल्सन

2

जब आप oracle इंस्टॉल करते हैं, तो oracle ने पूछा कि आप ok पर क्लिक करने से पहले कुछ स्क्रिप्ट चलाते हैं। उस स्क्रिप्ट ने .bash_profileoracle user होम डायरेक्टरी में डमी सेटिंग की । फ़ाइल देखने के लिए, ls -alसभी छिपी हुई फ़ाइलें दिखाएंगे।

nano bash_profileफ़ाइल खोलने के लिए टाइप करें। अपने होस्टनाम और उचित साइड नाम को दर्शाने के लिए फ़ाइल में परिवर्तन करें। किसी भी अन्य सेटिंग्स की जाँच करें जिन्हें संशोधन की आवश्यकता है। यदि आप सहेजना चाहते हैं, तो y को बचाने के लिए नियंत्रण y दबाएँ और y टाइप करें। बचाने के लिए वापसी कुंजी दबाएँ। कंप्यूटर को पुनरारंभ। Oracle उपयोगकर्ता के रूप में लॉगिंग। टाइप करके डेटाबेस शुरू करें

sqlplus / as sysdba

startup  

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