2012-03-22 7 views
7

.bashrc पर अमल नहीं करता है cygwin खोल शुरू करने के बाद, यह सिर्फ एक गलत घर dir में पता लगाने:Cygwin खोल

[email protected] ~ 
$ pwd 
/cygdrive/c/Users/xfire 

लेकिन यह होने के लिए/घर/Xfire इस्तेमाल किया

[email protected] /etc 
$ cat passwd | grep xfire 
xfire:unused:22773:10513:U-CORP\xfire,S-1-5-21-527237240-725345543-682003330-12773:/home/xfire:/bin/bash 

और/home/xfire में .bashrc निष्पादित नहीं किया गया था, यहां तक ​​कि मैं इसे/cygdrive/c/users/xfire पर कॉपी करता हूं, यह भी काम नहीं करता है!

+0

इसे देखें: http://www.cygwin.com/ml/cygwin/2002-01/msg00826.html – jahroy

+0

कुछ प्रोग्राम विंडोज रजिस्ट्री में "होम" वातावरण जोड़ते हैं और मान को "सी: \ उपयोगकर्ता" पर सेट करते हैं \ xfire ", यही कारण है कि साइगविन उस निर्देशिका को घर के रूप में लेते हैं। http://cygwin.com/faq-nochunks.html –

+0

बिल्ली का बेकार उपयोग: 'grep xfire passwd'। – Jens

उत्तर

6

कुछ प्रोग्राम विंडोज रजिस्ट्री में "होम" वातावरण जोड़ते हैं और मान को "सी: \ उपयोगकर्ता \ xfire" पर सेट करते हैं, यही कारण है कि साइगविन उस निर्देशिका को घर के रूप में ले जाती है। cygwin.com/faq-nochunks.html

+0

बहुत बुरा यह आपका स्वयं का जवाब था और इसलिए जब आप इसे सही उत्तर के रूप में चुनते थे तो शीर्ष पर नहीं पहुंचाया गया था, क्योंकि दो शीर्ष-वोट वाले उत्तर अनिवार्य रूप से बेकार हैं यदि HOME चर सेट नहीं है, तो आप कैसे उम्मीद करते हैं। –

+0

ठीक है, यह बताता है कि ऐसा क्यों होता है, लेकिन समस्या को हल करने के लिए कैसे नहीं ... – bgusach

+0

मेरा मतलब है, मुझे पता है कि अगर मैं इसे हटा देता हूं तो मुझे पता है, लेकिन अगर मैं अभी भी खिड़कियों में घर जाऊं? – bgusach

31

cygwin पर, मैं अपने ~/.bash_profile से जोड़ें:

. ~/.bashrc 
+3

यह मेरे लिए हल हो गया। हो सकता है कि आप यह स्पष्ट कर सकें कि क्या हो रहा है, और क्यों इवान्स वाई अपना जवाब स्वीकार करना चाहते हैं? –

+1

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

1

तुम भी भी BASH_ENV चर, जैसे सेट कर सकते हैं, BASH_ENV = 'C: \ Docume ~ 1 \ dwyttenb \ .bashrc'

3

cygwin के अपने संस्करण पर मैंने पाया कि केवल ~/.profile तो execueted किया जा रहा था .profile फाइल करने के लिए

if [ -e "${HOME}/.bash_profile" ]; then 
    source "${HOME}/.bash_profile" 
fi 

गयी। मेरी .bash_profile फ़ाइल में .bashrc के लिए एक और परीक्षण है और वहां से अंदर से निष्पादित करता है। मैंने अपनी .bashrc फ़ाइल में निम्न दो पंक्तियां भी जोड़ दीं।

export BASH_ENV="${HOME}/.profile" 
export ENV="${HOME}/.profile" 

इन सुनिश्चित है कि .profile गैर-सहभागी टर्मिनलों में मार डाला जाता है और दूसरा यह सुनिश्चित करता है यह POSIX टर्मिनलों में मार डाला जाता है के पहले। मुझे क्या चल रहा है और Bash Reference Manual में एक बहुत ही उपयोगी स्पष्टीकरण मिला।

आपके मामले में यह आपकी मदद नहीं करेगा क्योंकि आपको HOME पर्यावरण चर के मूल्य के साथ कोई समस्या है लेकिन यह समस्या इस समस्या को खोजते समय सूची में काफी अधिक है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^