उबंटू में $ JAVA_HOME आसानी से बदलने योग्य बनाएं [बंद]


139

उबंटू में, मैं जावा और 6 के बीच अपने JAVA_HOME पर्यावरण चर को आगे और पीछे स्विच करना चाहूंगा।

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

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

और उसी टर्मिनल विंडो में, मैं यह जांचने के लिए निम्नलिखित टाइप करता हूं कि पर्यावरण चर अपडेट किया गया है:

echo $JAVA_HOME

और मुझे /usr/lib/jvm/java-1.5.0-sun दिखाई देता है, जिसे मैं देखने की उम्मीद कर रहा हूं। इसके अलावा, मैं ~ / .profile को संशोधित करता हूं और JAVA_HOME पर्यावरण चर को /usr/lib/jvm/java-1.5.0-sun पर सेट करता हूं।

और अब इस समस्या के लिए - जब मैं एक नई टर्मिनल विंडो खोलता हूं और मैं अपने JAVA_HOME पर्यावरण चर को $ $ JAVA_HOME में टाइप करके देखता हूं तो मैं देखता हूं कि मेरा JAVA_HOME पर्यावरण चर वापस जावा 6 में वापस आ गया है। जब मैं अपनी मशीन (या लॉग रिबूट करता हूं) बाहर और पीछे, मुझे लगता है कि JAVA_HOME पर्यावरण चर जावा 5 पर सेट है (संभवत: मेरे ~ / .profile में किए गए संशोधन के कारण)।

वहाँ चारों ओर यह इतना एक तरीका है कि मैं लॉग आउट किए बिना और पीठ में मेरी JAVA_HOME वातावरण को बदल सकते हैं (और है कि वातावरण चर परिवर्तन करना है छड़ी सभी नए टर्मिनल विंडो में)?


29
सही साइट और डुप्लिकेट उत्तर क्या है?
मार्टिन कोनिसक सिप

~/.profileफ़ाइल केवल पढ़ने के लिए जब आप Ubuntu के लिए लॉग इन, आप लॉगआउट / लॉगिन तो JAVA_HOME सभी टर्मिनलों और किसी भी अन्य अनुप्रयोगों आप चलाने के लिए निर्धारित है, इसलिए यदि। यदि आप ~/.bashrcइसमें JAVA_HOME सेट करते हैं, तो यह केवल टर्मिनल से चलने वाले एप्लिकेशन द्वारा देखा जाएगा।
jr0cket

जवाबों:


196

वैश्विक /etc/environmentफ़ाइल में पर्यावरण चर डालें :

...
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
...

प्रत्येक शेल में "स्रोत / आदि / पर्यावरण" निष्पादित करें जहां आप चाहते हैं कि चर अपडेट किए जाएं:

$ source /etc/environment

जांचें कि यह काम करता है:

$ echo $JAVA_HOME
$ /usr/lib/jvm/java-1.5.0-sun

महान, कोई लॉगआउट की जरूरत है।

यदि आप केवल टर्मिनल में JAVA_HOME पर्यावरण चर सेट करना चाहते हैं, तो इसे ~ / .bashrc फ़ाइल में सेट करें ।


9
उबंटू यूआई के माध्यम से लॉन्च किए गए एप्लिकेशन को प्रभावित करने के लिए इन परिवर्तनों के लिए एक पुनरारंभ की आवश्यकता है (यानी एक ऐप पर डबल क्लिक करना)
एरिक हुआ

7
यह हर फ्रिगिन के शेल में केवल चर सेट करने से अलग कैसे है?
mlissner

1
हर बार इसे मैन्युअल रूप से नहीं चलाने का एक और तरीका यह है कि अपनी .bashrc फ़ाइल को संशोधित करने के लिए कमांड "स्रोत / आदि / पर्यावरण" शामिल करें
nityan

1
@MartinKonicek आपका उदाहरण गलत है। उस लाइन पर कोई 'निर्यात' नहीं होना चाहिए। / etc / पर्यावरण में प्रमुख मूल्य जोड़े शामिल हैं
pdeva

1
ध्यान रखें कि /etc/environmentविशेष है और चर प्रतिस्थापन की अनुमति नहीं देता है, जैसे JRE_HOME=${JAVA_HOME}/jreकाम नहीं करेगा।
अब्दुल

31

यह संभवतः आपकी समस्या का समाधान करेगा: https://help.ubuntu.com/community/EnvironmentVariables

सत्र-व्यापी परिवेश चर

किसी विशेष उपयोगकर्ता के वातावरण को प्रभावित करने वाले तरीके से पर्यावरण चर सेट करने के लिए, किसी को उपयोगकर्ता के होम डायरेक्टरी में विशेष रूप से शेल स्क्रिप्ट फ़ाइलों में अपने मान सेट करने के लिए कमांड नहीं रखना चाहिए, लेकिन उपयोग करें:

~ / .pam_environment - यह फ़ाइल विशेष रूप से उपयोगकर्ता के पर्यावरण को स्थापित करने के लिए है। यह एक स्क्रिप्ट फ़ाइल नहीं है, बल्कि असाइनमेंट एक्सप्रेशंस, प्रति पंक्ति एक है।

सिफारिश नहीं की गई:

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


आपके द्वारा दिए गए लिंक से: "नीचे की अनुशंसा नहीं की गई है, लेकिन इस पृष्ठ पर प्रदान किए गए पिछले समाधान (?) 10.04 डेस्कटॉप रिलीज के साथ काम नहीं किया है।। Pam_environment वितरण के साथ स्वाभाविक रूप से पूर्ववर्ती नहीं है।"
कैलमेरियस

14
~ / .pam_environment आपके लॉगिन को ईंट करने का एक शानदार तरीका है यदि आप मानते हैं कि यह चर को संसाधित करता है। मैंने PATH को $ {PATH}: $ {HOME} / bin में सेट करने की कोशिश की और यह चर का मूल्यांकन करने में विफल रहा। नेट परिणाम: लॉग इन नहीं कर सकते हैं :( Ctrl-Alt-1 पर जाकर और "/ बिन / rm ~ / .pam_environment" चलाकर। असाधारण रूप से सावधान रहें या यहां सेटिंग्स का परीक्षण करने के लिए एक द्वितीयक खाते का उपयोग करें।
Alain O'Dea

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

1
@ AlainO'Dea: मैं वास्तव में एक ही मुद्दा था। जब मैं पिछले लॉगिन स्क्रीन प्राप्त नहीं कर सका, तो हैरान और चिंतित हूं। कुछ खुदाई के बाद मैंने पाया कि आप चर का उपयोग कर सकते हैं लेकिन एक अलग वाक्यविन्यास का उपयोग करना होगा। जैसे। पाथ डिफॉल्ट = $ {पाथ}: $ {गृह} / बिन जब यह एक चर का उपयोग नहीं कर रहा है, तो एक साधारण असाइनमेंट काम करने लगता है।
टिम_विनिल

हां, मैं @ AlainO'Dea से सहमत हूं। यदि आपकी स्क्रिप्ट में कोई त्रुटि है, तो आप लॉगिन नहीं कर पाएंगे। ख्याल रखना।
इवान हू

13

इन चरणों का प्रयास करें।

- हम "etc \ profile" को एडिट करने जा रहे हैं। पर्यावरण चर को फ़ाइल के निचले भाग में इनपुट किया जाना है। चूंकि उबंटू रूट फ़ोल्डर तक पहुंच नहीं देता है, इसलिए हमें टर्मिनल में कुछ कमांड का उपयोग करना होगा

Step1: स्टार्ट टर्मिनल। कमांड में टाइप करें:gksudo gedit /etc/profile

Step2: प्रोफाइल टेक्स्ट फाइल खुलेगी। पृष्ठ के निचले भाग में पर्यावरण चर दर्ज करें ........... उदा: export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH

चरण 3: फ़ाइल को सहेजें और बंद करें। जाँच करें कि क्या पर्यावरण चर को ईको कमांड ........ एग का उपयोग करके सेट किया गया है echo $PATH


9

आपको ~/.bashrcफ़ाइल में परिवर्तनशील परिभाषा डालने की आवश्यकता है ।

बैश मैन पेज से:

जब एक इंटरेक्टिव शेल जो लॉगिन शेल नहीं है, तो bash पढ़ता है और /etc/bash.bashrc और ~ / .bashrc से कमांड निष्पादित करता है, अगर ये फाइलें मौजूद हैं।


5

परंपरागत रूप से, यदि आप केवल अपने टर्मिनल विंडो में चर को बदलना चाहते हैं, तो इसे .bashrcफ़ाइल में सेट करें , जो कि हर बार नया टर्मिनल खोलने पर खट्टा हो जाता है। .profileहर बार जब आप एक नया टर्मिनल खोलते हैं तो फाइल खट्टी नहीं होती।

प्रश्न में .profile और .bashrc के बीच अंतर देखें: .bashrc, .bash_ile और .environment के बीच क्या अंतर है?

.bashrcअपनी समस्या को हल करना चाहिए। हालाँकि, यह उचित समाधान नहीं है क्योंकि आप उबंटू का उपयोग कर रहे हैं। प्रासंगिक उबंटू सहायता पृष्ठ " सत्र चौड़ा वातावरण चर " देखें। इस प्रकार, कोई आश्चर्य नहीं कि .profileआप के लिए काम नहीं करता है। मैं Ubuntu 12.04 और xfce का उपयोग करता हूं। मैंने अपना सेट अप किया .profileऔर यहां तक ​​कि अगर मैं बाहर लॉग इन करता हूं तो भी यह प्रभावी नहीं है । तो आपको .pam_environmentफ़ाइल का उपयोग करना पड़ सकता है और पूरी तरह से भूल सकता है .profile, और .bashrc। और ध्यान दें कि .pam_environmentएक स्क्रिप्ट फ़ाइल नहीं है।


1

एक नज़र डालें bash(1), आपको विकल्प चुनने के लिए एक लॉगिन शेल की आवश्यकता है ~/.profile, अर्थात -lविकल्प।


1

मुझे पता है कि यह एक लंबा ठंडा सवाल है, लेकिन यह हर बार आता है जब एक नया या हाल ही में प्रमुख जावा रिलीज होता है। अब यह आसानी से 6 और 7 स्वैपिंग पर लागू होगा।

मैंने इसके साथ अतीत में किया है update-java-alternatives: http://manpages.ubuntu.com/manpages/hardy/man8/update-java-alternatives.8.html


1

.Profile में परिवर्तन करने के बाद, परिवर्तनों को प्रभावी करने के लिए, आपको फ़ाइल को निष्पादित करना होगा।

root@masternode# . ~/.profile

एक बार यह पूरा हो जाने पर, इको कमांड काम करेगा।


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