मैं ubuntu में .bash_profile नहीं ढूँढ सकता


67

मैं .bash_profileअपनी /home/userनिर्देशिका में Ubuntu 14.04 में नहीं मिल सकता । मैंने ls -aकमांड को देखने के लिए उपयोग किया .bash_profile, लेकिन ऐसी कोई फ़ाइल नहीं है।


1
आपको ~/.profileइसके बजाय उपयोग करना चाहिए ।
मुरु


1
यह बहुत सामान्य है कि कुछ कॉन्फ़िगरेशन फ़ाइल (या यहां तक ​​कि निर्देशिकाएं) गायब हैं। उस स्थिति में सॉफ्टवेयर जो उन्हें पढ़ना चाहिए, वह डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करेगा और / या कॉन्फ़िगरेशन को पुनः प्राप्त करने के लिए अन्य स्रोतों को पढ़ेगा। यदि आप एक कॉन्फ़िगरेशन फ़ाइल को संशोधित करना चाहते हैं जो मौजूद नहीं है तो बस इसे पहले बनाएं।
बकुरीउ

जवाबों:


84

उबटन का उपयोग करता है ~/.profile

आप .bash_profileउबंटू में अपना बना सकते हैं लेकिन फिर .profileपढ़ा नहीं जाएगा।

यदि हम पढ़ते हैं। शुद्ध सामग्री:

cat ~/.profile

उत्पादन

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

इसलिए के ~/.profileबजाय का उपयोग करें~/.bash_profile


.profile ने मेरे लिए काम नहीं किया। मैं .bashrc संपादित करने के लिए किया था vim ~/.bashrcतो. ~/.bashrc
नाहिद

उपयोग .bash_profile उबंटू पर काम नहीं करता है। यह डैश को GUI लॉगिन शेल के रूप में उपयोग करता है, न कि बैश पर, इसलिए bash_profile को नहीं पढ़ा जाता है।
जोनाथन हार्टले

यदि आप अपने .profile को संपादित करते हैं, तो आपको परिवर्तनों को देखने के लिए फिर से लॉग आउट करना होगा।
जोनाथन हार्टले

8

जब एक लॉगिन शेल बैश इनवॉइस किया जाता है तो इस क्रम में इसकी कॉन्फिग फाइल्स की तलाश होगी:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

पहले एक को खोजने के बाद, यह दूसरों की तलाश करना बंद कर देता है इसलिए अगर .bash_profileमेरी $HOMEबैश में है तो कोई .bash_loginऔर नहीं देखेगा .profile

इन तीन फ़ाइल नामों से, उबंटू डिफ़ॉल्ट रूप से उपयोग करता .profileहै, .bash_profileयदि आप चाहें तो इसका नाम बदल सकते हैं:

mv ~/.profile ~/.bash_profile

अब अगर हम उपयोग कर एक नया बैश खोल खोलने bash -l, su - $USER, sudo -u $USER -iया किसी अन्य आदेशों एक लॉगिन शेल के रूप में बैश चलाता है, ~/.bash_profilesourced हो जाएगी।

नोट करने के लिए महत्वपूर्ण:

मैंने अब तक जो भी बात की है वह केवल बैश पर ही लागू होती है, जब आप जीयूआई से सिस्टम में लॉग इन कर रहे होते हैं, तो डिस्प्ले मैनेजर सही फाइलों को सोर्स करने के लिए जिम्मेदार होता है।

उबंटू gdm3इसके डिस्प्ले मैनेजर के रूप में उपयोग करता है , अगर हम इस पर एक नज़र डालें: /etc/gdm3/Xsessionहम देख सकते हैं कि इसके अलावा किसी भी फाइल में खटास नहीं आएगी .profile:

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

इसलिए यदि आप लॉगिन करने के लिए GUI का उपयोग कर रहे हैं, तो फ़ाइल को .profileनाम पर रखें अन्यथा आप अपने वातावरण में कुछ चर और सेटिंग्स को याद कर सकते हैं।

मुझे लगता है कि बेहतर विकल्प के लिए एक सिमलिंक बना रहा है .profile:

ln -s ~/.profile ~/.bash_profile

अब आपका डेटा रहता है .profile, gdmकुछ भी याद नहीं करता है, .bash_profileजो वास्तव में लोड करता है , को मारता है .profile, और उनमें से प्रत्येक को संपादित करके आपको समान परिणाम मिलता है।

गुम हो रहा है।

यदि आपके पास नहीं है .profileतो यहां से इसकी एक प्रति ले लें:

cp /etc/skel/.profile ~/.profile

या

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile

लेकिन, अगर बैश को पहले / / .bash_profile की तलाश है, तो यह उबंटू में कैसे नहीं है? क्या उबंटू ने बैश को संशोधित किया है? यह अजीब लगता है। man bashउबंटू में अभी भी वर्णन है कि यह पहली बार .bash_profile के लिए कैसा दिखेगा।
जोनाथन हार्टले

यह .bash_profile पहली बार ऐसा लगता है कि इसे पा नहीं सकते हैं (क्योंकि यह मौजूद नहीं है) फिर .bash_loginइसे फिर से नहीं ढूंढ सकता है (क्योंकि उबंटू इन दो नामों का उपयोग नहीं करता है) अंतिम रूप से इसे ढूंढता है .profileऔर हां यह है। तो अगर आप एक बनाने .bash_profileमें ~तो आप ubuntu के अधिलेखित कर रहे हैं ~/.profile, यह पार्टी कुछ भी नहीं के डिफ़ॉल्ट व्यवहार को यहां संशोधित किया गया है है।
रवेक्सिना

सही है, कि मैंने पहले क्या सोचा था! और आप जो वर्णन करते हैं वह आरएचईएल पर होता है। लेकिन उबंटू पर, ऐसा नहीं है। अगर मैं .bash_profileइसे बनाता हूं , तो यह पढ़ा नहीं जाता है। मुझे बस एहसास हुआ कि यह इसलिए है क्योंकि उबंटू अब GUI लॉगिन शेल के रूप में 'बैश' का उपयोग नहीं करता है। इसके बजाय 'डैश' का उपयोग करता है। मुझे लगता है कि यह 18.04 के बाद से सच है।
जोनाथन हार्टले

आप यहाँ बिंदु याद कर रहे हैं। वास्तव में हम स्वयं बैश के बारे में बात कर रहे हैं, जो मैं यहां कह रहा हूं वह यह है कि उबंटू प्राणी '.प्रोफाइल' और अन्य नहीं, इसलिए यदि हम एक नया बैश शेल (लॉगिन शेल) खोलते हैं जो इन फाइलों को पढ़ने का क्रम है, तो यह नहीं है ' टी बात है कि हम किस डिस्ट्रो का उपयोग कर रहे हैं। :)
रवेक्सिना

यदि पाठक आपके नाम के अनुसार .bash_profile के लिए .profile का नाम बदल देते हैं, तो उबंटू के लोगों के लिए, उस फ़ाइल को लॉगिन पर नहीं पढ़ा जाएगा, और न ही टर्मिनल खोलने पर। आपने उनकी व्यवस्था को तोड़ा है। फ़ाइल को पढ़ने का एकमात्र तरीका यह होगा कि वे स्पष्ट रूप से एक लॉगिन शेल बनाने के लिए '--login' आर्ग के साथ बैश सत्र लॉन्च करें। यह अपने डेस्कटॉप पर स्वचालित रूप से कभी नहीं होगा।
जोनाथन हार्टले

5

इसका मतलब है कि फ़ाइल मौजूद नहीं है। लेकिन, आप फ़ाइल बना सकते हैं और फ़ाइल को bashनिष्पादित / स्रोत कर सकते हैं यदि bashलॉगिन शेल के रूप में लागू किया गया है। तो आप एक शेल के माध्यम से लॉग इन करें (उदाहरण के माध्यम से ssh)।

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


क्या आप इस बारे में कुछ विचार कर सकते हैं कि .bash_profile फ़ाइल क्यों गायब है?
रोलडेनज

आप इसे /etc/skel/निर्देशिका से कॉपी कर सकते हैं ।
फ्रांटिक

यह विहित का एक डिजाइन desicion है। लेकिन, इसका मतलब यह नहीं है कि यह नहीं कर सकता।
अराजकता

मैंने समझाया कि .bash_profileउबंटू अन्य कारणों पर टिप्पणियों में अनुपस्थित है (और काम नहीं करता है)।
जोनाथन हार्टले

2

मेरे लिए काम करने के ~/.profileबजाय उपयोग करने के लिए शीर्ष उत्तर ~/.bash_profile

संशोधन का .bashrcकाम किया

बस:

vim ~/.bashrc

नोट: मैं Ubuntu WSL का उपयोग कर रहा हूँ।


जब आप GUI में लॉग इन करते हैं, या रिमोट से कनेक्ट करते हैं, या ctrl + shift + F2 दबाने के बाद कंसोल में लॉग इन करते हैं। यह आपके द्वारा मशीन में लॉगिन करने वाले प्रारंभिक समय का प्रतिनिधित्व करने वाला है, एक शेल का निर्माण करना जो आपके द्वारा बाद में बनाई गई अन्य सभी प्रक्रियाओं के लिए अभिभावक है। मुझे संदेह है कि डब्ल्यूएसएल पर, इस तरह की कोई चीज नहीं है, इसलिए आपके .profile को कभी नहीं पढ़ा जा सकता है।
जोनाथन हार्टले

मेरे लिए भी वैसा ही। ~/.profileसिर्फ ubuntu 18.04 में डिफ़ॉल्ट रूप से लोड नहीं किया गया
javapowered

0

अगर आपका मतलब .bashrc है तो आप इसे अपने होम फोल्डर में पाएंगे। यदि यह नहीं है, तो आप इसे / etc / skel फ़ोल्डर से अपने होम फ़ोल्डर में कॉपी कर सकते हैं।

यदि आपको इस विषय पर कुछ और जानकारी की आवश्यकता है, तो कृपया स्टेफान लिपेंस पेज पर जाएँ।

http://stefaanlippens.net/bashrc_and_others

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