मैक ओएस एक्स स्नो लेपर्ड और लायन पर .bashrc फ़ाइल कहाँ खोजें?


89

मैं अपने स्नो लेपर्ड मशीन पर आरवीएम स्थापित करना चाहता हूं।

यह कहता है कि मुझे अपनी .bashrcफ़ाइल में एक पंक्ति जोड़ने की आवश्यकता है (मैं bash का उपयोग कर रहा हूँ) लेकिन मेरी .bashrcफ़ाइल कहाँ है ?


1
आपको अपने समाधान को एक उत्तर में रखना चाहिए और इसे स्वीकार करना चाहिए (एसयू करने से पहले आपको एक या दो दिन इंतजार करना होगा) इस तरह एक ही समस्या वाले लोग प्रश्न को देख सकते हैं कि यह एक जवाब है।
निफले

1
उसका समाधान शीर्ष मतदान के जवाब से अलग नहीं है ..
डेविड कॉडन जूल

सिर्फ यह सुनिश्चित करने के लिए कि यह "लिनक्स = .बैश आर्क बनाम मैक ओएस =। (बश_) प्रोफाइल" का मुद्दा नहीं है, शेल स्टार्टअप फाइलें लिनक्स और मैक पर समान काम करती हैं और .bashrc फाइल सत्र के लिए अधिक बेहतर जगह है। विशिष्ट सेटिंग्स। आप उदाहरण के लिए tmux या स्क्रीन का उपयोग करते हैं, जिसमें आपके पास लॉगिन सत्र नहीं हो सकते हैं लेकिन फिर भी अपने उपनाम चाहते हैं। मैक अलग होने का कारण यह है कि अधिकांश लिनक्स वितरण प्रणाली प्रोफाइल स्क्रिप्ट या कंकाल प्रोफाइल जो पहले से ही (स्रोत) bashrc प्रतिनिधि करते हैं।
2:27

जवाबों:


78

.bashrcउपरोक्त समस्या के बारे में :

अधिकांश प्रणालियों पर, ~/.bashrcकेवल तभी उपयोग किया जाता है जब एक इंटरैक्टिव गैर-लॉगिन शेल शुरू होता है । हालाँकि, जब आप एक नया शेल शुरू करते हैं तो यह अक्सर एक इंटरेक्टिव लॉगिन शेल होता है । चूंकि यह एक लॉगिन शेल है, पर .bashrcध्यान नहीं दिया जाता है। गैर-लॉगिन और लॉगिन गोले के बीच पर्यावरण को सुसंगत रखने के लिए, आपको .bashrcअपने .profileया अपने स्रोत से स्रोत बनाना होगा .bash_profile

बैश संदर्भ मैनुअल देखें, खंड 6.2 बैश स्टार्टअप फाइलें

एक इंटरेक्टिव लॉगिन शेल के रूप में, या क्लोएजिन के साथ आमंत्रित किया गया

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

एक इंटरैक्टिव गैर-लॉगिन शेल के रूप में आमंत्रित किया गया

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

तो, आमतौर पर, आपके ~ / .bash_profile में लाइन होती है

   if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

किसी भी लॉगिन-विशिष्ट इनिशियलाइज़ेशन के बाद (या पहले)।

मेरे मैक (रनिंग तेंदुए) पर, स्रोत के लिए कोई रेखा नहीं थी ~/.bashrc। मुझे इस कार्यक्षमता को स्वयं ही जोड़ना था।

कुछ सिस्टम और अन्य OSes पर, .bashrcवैश्विक से /etc/profileया /etc/bash_profile, या टेम्पलेट फ़ाइलों का उपयोग करके किया जाता है /etc/skel

ईमानदारी से भेद करना .bashrcऔर .bash_profileसमुदाय द्वारा अच्छी तरह से समझा नहीं जाना है। जब कई डेवलपर्स कहते हैं कि "इसे अपने .bashrc में जोड़ें", उनका वास्तव में क्या मतलब है "इसे अपने .bash_profile में जोड़ें"। वे चाहते हैं कि कार्यक्षमता आपके लॉगिन शेल में जोड़ी जाए (जो है .bash_profile), आपके गैर-लॉगिन शेल में नहीं। वास्तव में, यह आमतौर पर मायने नहीं रखता है और इसमें विन्यास .bashrcको स्वीकार्य है।


यह लिंक गोले के प्रकारों का एक अच्छा अवलोकन देता है और जब स्टार्टअप फाइलें लोड होती हैं - hacktux.com/bash/bashrc/bash_profile
studgeek

यहाँ "sourced" से क्या अभिप्राय है?
एलिग्रेगो

@elgrego, यहाँ एक अच्छा विवरण दिया गया है: जब किसी फ़ाइल को सोर्स किया जाता है (कमांड लाइन पर स्रोत फ़ाइलनाम और फ़ाइल नाम टाइप करके), तो फ़ाइल में कोड की पंक्तियों को निष्पादित किया जाता है जैसे कि वे कमांड लाइन पर प्रिंट किए गए थे। देखें tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
स्टीफन Lasiewski

60

तो यह पता चला है कि मैक ओएस एक्स स्नो लेपर्ड के साथ-साथ मैक ओएस एक्स लॉयन पर, जो फ़ाइल भरी हुई है उसे कहा जाता है .profile, नहीं .bashrc

आप जो करना चाहते हैं, ~/.profileउसमें एक फ़ाइल बनाएं और उसे कॉल करें। (यदि यह पहले से मौजूद नहीं है)।

वहाँ जो कुछ भी जानकारी आपको चाहिए, उसे bash के प्रत्येक उदाहरण के साथ लोड करने के लिए रखें (धन्यवाद, thepurplepixel)।

साइड नोट्स की एक जोड़ी:

  1. फ़ाइल के सामने की अवधि इसे खोजक के लिए अदृश्य और डिफ़ॉल्ट रूप से ls कमांड के रूप में चिह्नित करती है। टर्मिनल से ls कमांड का उपयोग करके अदृश्य फ़ाइलों को सूचीबद्ध करने के लिए, -aएक पैरामीटर के रूप में उपयोग करें :ls -a
  2. ~प्रतीक के लिए खड़ा है /Users/YourUserNameजहां yourusername अपने उपयोगकर्ता नाम के छोटे नाम है।

संपादित करें: क्रिस पेज नोट्स (सही ढंग से) कि आप जो भी एक .profile फ़ाइल में रखते हैं वह आपके द्वारा उपयोग किए जा रहे शेल (यानी zhs, bash, et cetera) पर लागू होगा। यदि आप चाहते हैं कि सामग्री केवल बैश शेल को प्रभावित करे, तो सामग्री को .bash_profileफ़ाइल के बजाय .profileफ़ाइल में रखें।


5
1 जून 2010 को आपके प्रश्न का उत्तर दिया गया था - आपके कहने के एक दिन बाद। एक साल बाद, आप वापस आते हैं और उसी उत्तर को प्रदान करते हैं और अपना स्वयं का उत्तर स्वीकार करते हैं ...
डेविड काउडन

3
वास्तव में उसका जवाब 1 जून 2010 को दिए गए उत्तर की तुलना में अधिक विवरण जोड़ता है। वह विशेष रूप से मैक ओएस एक्स पर समस्या को संबोधित करता है जो मुझे उपयोगी लगा।
वेबवॉर्म

3
ध्यान दें कि यदि .bash_profileआपके घर की निर्देशिका में पहले से ही मौजूद है, तो .profileफ़ाइल को पढ़ा नहीं जाएगा!
फणी

मेरे पास मैक ओएस एल कैपिटान का एक ताजा इंस्टॉलेशन है। कोई प्रोफ़ाइल फ़ाइल नहीं है। बस एक .profile फ़ाइल बनाएँ और यह काम करता है। मैंने व्यक्तिगत रूप से अपने .bashrc को .profile नाम दिया है।
निकोलस थ्री

4

आपको अपना बनाना है .bashrc। आप अपनी .bashrcइच्छित सामग्री ( जिसे अपनी होम डाइरेक्टरी में सहेज कर रख सकते हैं ) के साथ एक फाइल एडिटर (कोई एक्सटेंशन नहीं) बनाने के लिए बस टेक्स्ट एडिटर का उपयोग कर सकते हैं /Users/YourUserName/


1
वास्तव में, यह काम नहीं किया, लेकिन आपने मुझे अपनी फाइल बनाने के लिए कहकर सही दिशा में भेजा। हिम तेंदुए के विन्यास पर काम करने वाली फ़ाइल .profile थी, न .bashrc (जो किसी कारण से इस OS में लोड नहीं हुई)। मैं प्रश्न में विस्तृत निर्देश पोस्ट करूँगा। धन्यवाद!
युवल

@Yuval: डिफ़ॉल्ट रूप से, एक .bashrcकाम करेगा, लेकिन केवल अगर कोई नहीं है .profileमुझे लगता ~/.profileहै कि डिफ़ॉल्ट रूप से मौजूद है, हालांकि। मैं खुशी से मदद कर सकता है! (और आपको अपना समाधान एक उत्तर में रखना चाहिए और इस प्रश्न के भविष्य के पाठकों के लिए इसे स्वीकार करना चाहिए)।
सुबह 10:09

मुझे लगता है कि आपकी टिप्पणी केवल तभी है जब कोई लाभ नहीं है। गलत है। .bashrc एक संवादात्मक गैर-लॉगिन शेल के भीतर काम करेगा, या यदि यह .profile (.bash_profile से संभवत: एक बेहतर स्थान है, क्योंकि .profile बॉर्न शेल के लिए है)। .profile का उपयोग इंटरेक्टिव नॉन-लॉगिन शेल के दौरान किया जाता है।
स्टीफन लासिवस्की

@Stefan यह सही लगता है, तो। मैं एक विशेषज्ञ नहीं हूँ :)
स्क्वेयरल

2
कोई नहीं है ;)। यह सामान (.bashrc vs .profile बनाम .bash_profile बनाम .bash_login बनाम इंटरेक्टिव लॉगिन शेल बनाम इंटरएक्टिव नॉन-लॉगिन शेल बनाम नॉन-इंटरेक्टिव शेल) भ्रामक है, और यह कई यूनिक्स और शेल स्क्रिप्ट्स द्वारा तोड़ा और ओवरराइड किया गया है।
स्टीफन लासिवस्की

3

मुझे लगता है कि मेरे ओएस 10.6.5 में बैश सेटिंग्स "/ etc / bashrc" में हैं। मुझे लगता है कि यह शेल के लिए सबसे अच्छा विनिर्देशों है।

हालाँकि, आपको इसे संशोधित करने के लिए एक रूट खाते की आवश्यकता है। स्थानीय प्रति-उपयोगकर्ता विनिर्देशों "~ / .bashrc" को सिस्टम-स्तरीय बैश सेटिंग्स को पढ़ने और लोड करने के लिए, निम्नलिखित स्निपेट के साथ शुरू करना चाहिए:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

मैं सामान्य रूप से सिस्टम स्तर के बैश आर्क में उपनाम जोड़ता हूं ताकि सभी उपयोगकर्ता उन्हें भी एक्सेस कर सकें। जब तक वे आपके शॉर्टकट और उपनाम का उपयोग नहीं करना चाहते।

सौभाग्य!


2
/ etc / प्रोफ़ाइल (लॉगिन गोले द्वारा संचालित) एक वैश्विक बैश स्टार्टअप स्क्रिप्ट है जो सभी उपयोगकर्ताओं पर लागू होती है और लॉगिन गोले के लिए डिफ़ॉल्ट व्यवहार प्रदान करती है। यह बदले में चलता है / etc / bashrc, जिसमें ऐसे अनुकूलन होते हैं जो लॉगिन और गैर-लॉगिन शेल दोनों पर लागू होते हैं। इसी तरह, अलग-अलग उपयोगकर्ताओं को ~ / .bash_profile फ़ाइल बनानी चाहिए जो ~ / .bashrc चलती है, जो कि अधिकांश अनुकूलन होनी चाहिए, और ~ / .bashrc गैर-लॉगिन गोले के लिए डिफ़ॉल्ट व्यवहारों को प्राप्त करने के लिए / etc / bashrc चलना चाहिए।
क्रिस पेज

1
अलग-अलग उपयोगकर्ताओं के लिए, इन अनुकूलन को अपने घर निर्देशिका में जोड़ना सबसे अच्छा है ~/.bashrc, नहीं /etc/bashrc/etc/bashrcआपके सिस्टम पर सभी उपयोगकर्ताओं के लिए वैश्विक सेटिंग्स हैं, जो संभवत: वह नहीं है जो आप चाहते हैं। इसके अलावा, Apple साथ-साथ आ सकता है और /etc/bashrcसमय-समय पर बदल सकता है, जो आपके अनुकूलन को दूर कर सकता है।
स्टीफन लासिवस्की

1

एक .bashrc फ़ाइल में कुछ भी जोड़ने के लिए .profile फ़ाइल का उपयोग करें।

उदाहरण के लिए

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 

2
मेरा सुझाव है कि आप ~ / .bash_profile (~ / .profile के बजाय) का उपयोग करें जब तक कि आप निश्चित नहीं हैं कि आप चाहते हैं कि आपके अनुकूलन अन्य गोले में प्रभावी हों और वे संगत हों।
क्रिस पेज

सिर्फ यह सुनिश्चित करने के लिए कि यह "लिनक्स = .बैश आर्क बनाम मैक ओएस =। (बश_) प्रोफाइल" का मुद्दा नहीं है, शेल स्टार्टअप फाइलें लिनक्स और मैक पर समान काम करती हैं और .bashrc फाइल सत्र के लिए अधिक बेहतर जगह है। विशिष्ट सेटिंग्स। आप उदाहरण के लिए tmux या स्क्रीन का उपयोग करते हैं, जिसमें आपके पास लॉगिन सत्र नहीं हो सकते हैं लेकिन फिर भी अपने उपनाम चाहते हैं। मैक अलग होने का कारण यह है कि अधिकांश लिनक्स वितरण प्रणाली प्रोफाइल स्क्रिप्ट या कंकाल प्रोफाइल जो पहले से ही (स्रोत) bashrc प्रतिनिधि करते हैं।
eckes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.