जवाबों:
इसे नहीं कहा जाता है bash_profile
, लेकिन वैश्विक बैश विन्यास के लिए मानक स्थान है /etc/bash.bashrc
। /etc/profile
यदि शेल बैश है, तो इसे कॉल करना सामान्य है। उदाहरण के लिए, मेरे /etc/profile
पास:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
उपयोग के संदर्भ में, /etc/profile
सभी बॉर्न संगत गोले (श, बश, क्श, आदि) के लिए सिस्टम-वाइड कॉन्फ़िगरेशन प्रदान करता है। सामान्य रूप से समकक्ष की कोई आवश्यकता नहीं है /etc/bash_profile
, क्योंकि प्रोफ़ाइल फ़ाइल का उद्देश्य लॉगिन गोले के लिए व्यवहार को नियंत्रित करना है। आम तौर पर आप जो कुछ भी करना चाहते हैं वह बाश-विशिष्ट नहीं होने वाला है। /etc/bash.bashrc
बैश-विशिष्ट है, और दोनों लॉगिन और गैर-लॉगिन शेल के लिए चलाया जाएगा।
चीजों को और जटिल करने के लिए, ऐसा लगता है कि ओएस एक्स में ए भी नहीं है /etc/bash.bashrc
। यह संभवतः इस तथ्य से संबंधित है कि टर्मिनल X ओएस एक्स में डिफ़ॉल्ट रूप से लॉगिन गोले के रूप में चल रहा है , इसलिए भेद खो गया है:
टर्मिनल विंडो दिशानिर्देशों का एक अपवाद मैक ओएस एक्स है Terminal.app, जो .bashrc के बजाय .bash_profile को कॉल करके प्रत्येक नई टर्मिनल विंडो के लिए डिफ़ॉल्ट रूप से एक लॉगिन शेल चलाता है। अन्य जीयूआई टर्मिनल एमुलेटर भी ऐसा कर सकते हैं, लेकिन अधिकांश ऐसा नहीं करते हैं।
मैं OS X नहीं चलाता, इसलिए मेरे ज्ञान की सीमा वहीं समाप्त हो जाती है।
/etc/profile
Ubuntu 12.04 में डिफ़ॉल्ट से है । इसके बजाय आप क्या सुझाव देंगे अगर कोई चाहता /etc/profile
था जिसे केवल मार के तहत निष्पादित किया गया था, और कोई अन्य श-संगत शेल नहीं था?
/etc/profile
मेरे सिस्टम की सिस्टम फ़ाइल में शीर्ष पर एक टिप्पणी है जिसमें लिखा है # System-wide .profile for sh(1)
:। इसका मतलब यह है profile
है sh
विशिष्ट? किसी sh
तरह पहले चलता है bash
?
sh
का सबसेट है bash
। /etc/profile
के लिए मार डाला जाता है sh
, bash
अन्य सभी बॉर्न-संगत के गोले, और।
/etc/bashrc
मैक पर बुलाया गया है, नहीं /etc/bash.bashrc
। यह भी के लिए चलाने के लिए प्रकट होता है /bin/sh
।
/etc/profile
वैश्विक है bash_profile
। बैश करने के लिए विशिष्ट कोई फ़ाइल नहीं है, बैश बस सभी बॉर्न-शैली शेल द्वारा पढ़ी गई मानक फ़ाइल पढ़ता है। यहीं से आप सिस्टम-वाइड वातावरण चर सेट कर सकते हैं।
देखें क्या सभी गोले द्वारा पढ़ी गई ".bashrc" समकक्ष फ़ाइल है? बैश की सामान्य स्टार्टअप फ़ाइलों के एक सामान्य अवलोकन के लिए।
यह लोड नहीं करता है /etc/profile
, इसलिए लोड होने में कुछ भी नहीं है /etc/profile.d/
(लॉगिन शेल के विपरीत, अंत देखें)।
इसके लिए वैश्विक फ़ाइल / etc / bashrc या /etc/bash.bashrc ( -DSYS_BASHRC=
संकलन समय पर ध्वज सेट के आधार पर ) है:
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
[ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM"
आमतौर पर टकराव से बचने के लिए इस फ़ाइल को (जितना संभव हो) छोड़ना एक अच्छा विचार है। मेरे द्वारा उपयोग की जाने वाली रणनीति लॉगिन (/ आदि / प्रोफ़ाइल) के गोले के समान है।
मेरी रणनीति उपरोक्त फ़ाइल में एक लोडर संलग्न करना है:
# Add new directory analog to /etc/profile.d
mkdir /etc/bashrc.d
# Write the loader to /etc/bash.bashrc (it might be /etc/bashrc on as mentioned above)
cat >> /etc/bash.bashrc << 'EOF'
# I appended this: Load scripts from /etc/bashrc.d
if test -d /etc/bashrc.d; then
for script in /etc/bashrc.d/*.sh; do
test -r "$script" && . "$script"
done
unset item
fi
EOF
अब मैं आसानी से / .cc/bashrc.d निर्देशिका में नई .shfiles डालकर वैश्विक इंटरएक्टिव (bash) शेल फ़ाइल में n अनुकूलन कर सकता हूं।
/etc/bashrc.d/grep.sh
alias grep='grep --color=auto'
आप इसे इस एक-लाइनर के साथ कर सकते हैं:
printf "alias grep=\'grep --color=auto\'" > /etc/bashrc.d/grep.sh
यदि, इसे पढ़ने के बाद, आप बिना पढ़े रह जाते हैं, तो अपने आप को समझाने के लिए ऐसा करें:
printf "alias grep=\'grep --color=auto\'" > /etc/profile.d/grep.sh
एक नया टर्मिनल एमुलेटर खोलें और अपने उपयोगकर्ता निर्देशिका में कुछ सामान्य शब्द खोजें जैसे "grep का उपयोग करना"
grep -r 'the'
कुछ भी रंगीन नहीं होना चाहिए। वर्चुअल कंसोल में एक ही काम करें CTRLALTF1 (याद रखें कि आपका एक्स सर्वर शायद CTRLALTF7 पर चल रहा है ताकि आप वापस स्विच कर सकें। यदि आपका भूल जाते हैं, तो बस अपने डेस्कटॉप प्रबंधक को फिर से शुरू करें, उदाहरण के लिए)
grep -r 'the'
वांछित के रूप में रंगीन परिणाम देगा।
कुछ भी रंगीन नहीं होना चाहिए। आभासी कंसोल में एक ही काम करें CTRLALTF1(याद रखें कि आपका एक्स सर्वर संभवतः चल रहा है CTRLALTF7ताकि आप वापस स्विच कर सकें। यदि आपका भूल जाते हैं, तो बस अपने डेस्कटॉप प्रबंधक को पुनरारंभ करें, उदाहरण के लिए)
grep -r 'the'
वांछित के रूप में रंगीन परिणाम देगा।
एक लॉगिन खोल क्या आप जब आप एक मशीन बूट या साथ आभासी शान्ति स्विच मिलता है CTRLALTF1के माध्यम से FNthआभासी कंसोल।
फ़ाइलों को लोड /etc/profile
करते समय एक लॉगिन शैल लोड होता /etc/profile.d/*.sh
है।
/etc/bash.bashrc
गैर-संवादात्मक शेल से न पढ़ें ।/etc/profile
गैर-इंटरैक्टिव शेल द्वारा पढ़ा जा सकता है। लॉगिन शेल और गैर-लॉगिन शेल के बीच अंतर