लिनक्स में एक चर को स्थायी रूप से कैसे निर्यात करें?


156

मैं RHEL6 चला रहा हूं, और मैंने इस तरह एक पर्यावरण चर निर्यात किया है:

export DISPLAY=:0

टर्मिनल बंद होने पर वह चर खो जाता है। मैं इसे स्थायी रूप से कैसे जोड़ूं ताकि यह चर मान हमेशा किसी विशेष उपयोगकर्ता के साथ मौजूद रहे?

जवाबों:


172

आप इसे अपने शेल कॉन्फ़िगरेशन फ़ाइल में जोड़ सकते हैं, उदाहरण के लिए $HOME/.bashrcया अधिक विश्व स्तर पर /etc/environment। इन पंक्तियों को जोड़ने के बाद जीयूआई आधारित प्रणाली में परिवर्तन तुरंत प्रतिबिंबित नहीं होंगे, आपको टर्मिनल से बाहर निकलना होगा या नया बनाना होगा और सर्वर में सत्र लॉगआउट करना होगा और इन परिवर्तनों को प्रतिबिंबित करने के लिए लॉगिन करना होगा।


3
धन्यवाद, यह उपयोगी है। मैं पुनः आरंभ किए बिना परिवर्तन कैसे कर सकता हूं? (मैं लिनक्स नौसिखिया हूं)
Bitterblue

6
@ मिनी-मी - ~ / bashrc हर बार जब आप खोल खोलते हैं तो खींचा जाता है। इसे स्पष्ट रूप से लोड करने के लिए, sourceजैसे - > source ~/.bashrc
कोस्तजा

@kostja सभी नए गोले के लिए? यदि मेरे पास उन चरों को बदलने से पहले चलने वाला ग्रहण है और मैं चाहता हूं कि ग्रहण में परिवर्तनशील चर हैं, तो क्या मुझे ग्रहण को फिर से शुरू करना होगा?
Bitterblue

1
@ मिनी-मी: प्रक्रिया का वातावरण आमतौर पर कॉलर द्वारा निर्धारित किया जाता है और प्रक्रिया के भीतर से बदल जाता है। एक चल रही प्रक्रिया के बाहर से एनवी बदलना असामान्य है और इसके साथ उल्लेखनीय नहीं है export, लेकिन डिबगर के साथ प्रयास करें
एंटोनी

1
@ Mr.Hyde: यह आमतौर पर कोई फर्क नहीं पड़ता। फ़ाइलों को ऊपर से नीचे तक पार्स किया जाता है, इसलिए यदि कोई var परिभाषा दूसरे पर निर्भर करती है, तो उन्हें तदनुसार आदेश दिया जाना चाहिए। तो हाँ फ़ाइल का अंत ठीक है।
एंटोनी

120

आपको स्थायी परिवेश चर सेट करने के लिए तीन फ़ाइलों को संपादित करना होगा:

  • ~ / .Bashrc

    जब आप किसी भी टर्मिनल विंडो को खोलते हैं तो यह फाइल चलाई जाएगी। इसलिए, यदि आप अपनी सभी टर्मिनल खिड़कियों में एक स्थायी पर्यावरण चर चाहते हैं, तो आपको इस फ़ाइल के अंत में निम्नलिखित पंक्ति जोड़नी होगी:
    DISPLAY = 0 निर्यात करें

  • ~ / .Profile

  • Bashrc के समान ही आपको इस फाइल के अंत में उल्लिखित कमांड लाइन को अपने OS के हर लॉगिन में अपने पर्यावरण चर को रखना होगा।

  • / Etc / पर्यावरण

  • यदि आप प्रत्येक विंडो या एप्लिकेशन (न केवल टर्मिनल विंडो) में अपना पर्यावरण चर चाहते हैं, तो आपको इस फ़ाइल को संपादित करना होगा। इस फ़ाइल के अंत में निम्न कमांड जोड़ें:
    DISPLAY = 0
    ध्यान दें कि इस फ़ाइल में आपको एक्सपोर्ट कमांड नहीं लिखना है

आम तौर पर आपको इस परिवर्तनों को लागू करने के लिए अपने कंप्यूटर को पुनरारंभ करना होगा। लेकिन आप इन आदेशों द्वारा bashrc और प्रोफ़ाइल में परिवर्तन लागू कर सकते हैं :

$ source ~/.bashrc
$ source ~/.profile

लेकिन / etc / पर्यावरण के लिए आपके पास कोई विकल्प नहीं है, लेकिन पुनरारंभ (जहाँ तक मुझे पता है)

  • एक सरल उपाय

  • मैंने उन सभी कार्यों को करने के लिए इस प्रक्रिया के लिए एक सरल स्क्रिप्ट लिखी है। आपको बस अपने पर्यावरण चर का नाम और मूल्य निर्धारित करना है।

    #!/bin/bash
    echo "Enter variable name: "
    read variable_name
    echo "Enter variable value: "
    read variable_value
    echo "adding " $variable_name " to environment variables: " $variable_value
    echo "export "$variable_name"="$variable_value>>~/.bashrc
    echo $variable_name"="$variable_value>>~/.profile
    echo $variable_name"="$variable_value>>/etc/environment
    source ~/.bashrc
    source ~/.profile
    echo "do you want to restart your computer to apply changes in /etc/environment file? yes(y)no(n)"
    read restart
    case $restart in
        y) sudo shutdown -r 0;;
        n) echo "don't forget to restart your computer manually";;
    esac
    exit
    

    इस पंक्तियों को एक shfile में सहेजें फिर इसे निष्पादन योग्य बनाएं और इसे चलाएं!


    1
    पटकथा ने बहुत अच्छा काम किया। मेरे पास Ubuntu 14.04 स्थापित है। मैंने अभी ऊपर की सामग्री को एक रिक्त फ़ाइल में चिपकाया है, इसे सम्मिलित किया है नाम_v.sh , फिर chmod -x insert_var.sh, तब bash insert_var.sh। धन्यवाद।
    ब्रूनो वोडोला मार्टिंस

    मैंने उबंटू में एक टर्मिनल विंडो खोली और एक्सपोर्ट MY_VAR = 1 दर्ज किया। इस परिवर्तनीय MY_VAR को कहां संग्रहीत किया जाएगा?
    vgokul129

    29

    अपने .bashrcया के लिए लाइन जोड़ें .profile$HOME/.profileवर्तमान उपयोगकर्ता के लिए सेट किए गए चर सक्रिय हैं, जो /etc/profileवैश्विक हैं। .bashrcप्रत्येक बैश सत्र प्रारंभ होते ही खींचा जाता है।


    27

    Ubuntu सिस्टम पर, निम्न स्थानों का उपयोग करें:

    1. JAVA_PATH=/usr/local/javaस्टोर के प्रारूप में सिस्टम-वाइड लगातार चर

      /etc/environment
      
    2. सिस्टम-वाइड लगातार चर जो संदर्भ चर जैसे
      export PATH="$JAVA_PATH:$PATH"स्टोर में हैं

      /etc/.bashrc
      
    3. PATH DEFAULT=/usr/bin:usr/local/binस्टोर के प्रारूप में उपयोगकर्ता विशिष्ट लगातार चर

      ~/.pam_environment
      

    # 2 पर अधिक जानकारी के लिए, यह उबंटू उत्तर पूछें । नोट: # 3 उबंटू की सिफारिश है, लेकिन वास्तविक दुनिया में सुरक्षा चिंता हो सकती है।


    2

    एक विशेष उदाहरण: मेरे पास जावा 7 और जावा 6 स्थापित है, मुझे 6 के साथ कुछ बिल्ड को चलाने की आवश्यकता है, 7 के साथ अन्य। इसलिए मुझे गतिशील रूप से परिवर्तन करने की आवश्यकता है JAVA_HOMEताकि मावेन उठाएं कि मैं प्रत्येक बिल्ड के लिए क्या चाहता हूं। मैंने निम्नलिखित कार्य किया:

    • बनाया j6.shस्क्रिप्ट जो सिर्फ निर्यात JAVA_HOME=...करने के लिए रास्ता j6 स्थापित करता है ...
    • फिर, जैसा कि ऊपर की टिप्पणियों में से एक ने सुझाव दिया है, जब भी मुझे एक निर्माण के लिए जे 6 की आवश्यकता होती है, मैं j6.shउस संबंधित कमांड टर्मिनल में स्रोत चलाता हूं । डिफ़ॉल्ट रूप से, मेरा JAVA_HOMEJ7 पर सेट है।

    उम्मीद है की यह मदद करेगा।


    0

    यदि यह किसी को भी सूट करता है, तो यहां स्थायी रूप से पर्यावरण चर जोड़ने के लिए कुछ संक्षिप्त दिशानिर्देश दिए गए हैं।

    vi ~/.bash_profile
    

    चर को फ़ाइल में जोड़ें:

    export DISPLAY=:0
    export JAVA_HOME=~/opt/openjdk11
    

    सभी परिवर्तनों को तुरंत लागू करें:

    source ~/.bash_profile
    

    स्रोत: https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-set-environment-variables-in-linux/

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