Cygwin .bashrc स्रोत नहीं हो रहा है क्योंकि Windows होम में साइबरविन शुरू हो रहा है


9

नोट: कृपया समस्या पर अद्यतन के लिए नीचे मेरा दूसरा संपादन देखें।

सिग्विन पिछले हफ्ते तक मेरे लिए ठीक काम कर रहा था। अब .bashrc को खट्टा नहीं किया जा रहा है। मैंने कुछ स्थापित किया है या कुछ बदल दिया है, लेकिन मुझे याद नहीं है कि वास्तव में क्या समस्या हुई। जब मैं साइगविन शुरू करता हूं, तो मैं अपने विंडोज घर में हूं और मेरा कोई भी एलियास काम नहीं करता है। मुझे मैन्युअल रूप से .bashrc सोर्स करना होगा। निम्नलिखित मेरा Cygwin.bat है:

@echo off

C:
chdir C:\cygwin\bin

set CYGWIN=tty notitle glob

bash --login -i

कोई विचार?

संपादित करें: मेरा .bash_profile में निम्नलिखित शामिल हैं:

# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

EDIT2: महत्वपूर्ण! जब मैंने साइग्विन शुरू किया तो यह मेरे विंडोज होम फोल्डर में शुरू होता है। मैंने अपने .bash_profile और .bashrc को इस फ़ोल्डर में डालने का प्रयास किया और वे सही ढंग से तैयार किए गए थे! इसका मतलब यह है कि समस्या का पता लगाने के लिए कम कर दिया गया है कि क्यों सिग्विन विंडोज होम फोल्डर में शुरू होता है और सामान्य सिग्विन होम फोल्डर में नहीं।

EDIT3: grep गुलशन / etc / passwd / चलाने के परिणाम

$ grep Gulshan /etc/passwd
Administrator:unused:500:513:U-Gulshan-HP\Administrator,S-1-5-21-1235613160-4193452482-2032876723-500:/home/Administrator:/bin/bash
Guest:unused:501:513:U-Gulshan-HP\Guest,S-1-5-21-1235613160-4193452482-2032876723-501:/home/Guest:/bin/bash
Gulshan:unused:1000:513:U-Gulshan-HP\Gulshan,S-1-5-21-1235613160-4193452482-2032876723-1000:/home/Gulshan:/bin/bash

जब आपका बैश शेल शुरू होता है (और आपको अपने विंडोज होम डायरेक्टरी में डालता है), क्या echo $HOMEप्रिंट करता है ?
कीथ थॉम्पसन

यह मेरे विंडोज घर को गूँजता है, न कि मेरा सिग्विन होम।
gsingh2011

लेकिन Cygwin सिंटैक्स का उपयोग करना, सही है? ( /cygdrive/c/Users/fooइसके बजाय C:\Users\foo)
कीथ थॉम्पसन

हाँ, Cygwin सिंटैक्स का उपयोग करना।
gsingh2011

जब आप HOME=/home/yourname bash -lटर्मिनल प्रॉम्प्ट पर टाइप करते हैं तो क्या होता है ? अगर मैं सही हूं, तो यह आपको ठीक से काम करने वाला खोल देना चाहिए। ध्यान दें कि यह एक निदान है, या सबसे अच्छा एक समाधान है, न कि समाधान; हमें अभी भी यह पता लगाने की आवश्यकता है कि आपकी $HOMEपहली जगह गलत क्यों है। मूल समस्या की गलत सेटिंग है $HOME; बैश सही व्यवहार कर रहा है।
कीथ थॉम्पसन

जवाबों:


9

Cygwin पूछे जाने वाले प्रश्न बताते हैं कि कैसे $HOMEसेट किया जाता है:

Windows से Cygwin शुरू करते समय, HOMEप्राथमिकता घटने के क्रम में निम्नानुसार निर्धारित किया जाता है:

  • HOME Windows वातावरण से, POSIX के रूप में अनुवादित।
  • में प्रवेश /etc/passwd
  • /home/USERNAME

नेटवर्क से सिग्विन का उपयोग करते समय (टेलनेट, एसएचएस, ...) HOMEसे सेट किया जाता है /etc/passwd

यदि आपका HOMEमान इस तरह सेट है /cygdrive/c, तो संभावना है कि यह विंडोज में सेट किया गया था। set HOMEयदि यह स्थिति है तो सत्यापित करने के लिए डॉस कमांड विंडो शुरू करें और टाइप करें।

नेटवर्क से शुरू करते समय साझा ड्राइव तक पहुंच अक्सर प्रतिबंधित होती है, इस प्रकार डोमेन उपयोगकर्ता (स्थानीय ड्राइव पर HOME) की तुलना में विंडोज वातावरण (साझा ड्राइव पर) में एक अलग होना चाह सकते हैं /etc/passwd। ध्यान दें कि ssh केवल मानता है /etc/passwd, अवहेलना करता है HOME

मेरा सबसे अच्छा अनुमान है कि आपने अपनी /etc/passwdफ़ाइल गड़बड़ कर दी है । (विंडोज होम डायरेक्टरी है %USERPROFILE%, नहीं %HOME%।)

grep USERNAME /etc/passwdप्रिंट ( USERNAMEआपके उपयोगकर्ता नाम के साथ प्रतिस्थापित ) क्या करता है ?


मैंने अपने प्रश्न में आउटपुट जोड़ा है इसलिए इसे पढ़ना आसान है। ऐसा लगता है कि यह वहाँ सही ढंग से सेट है। हालाँकि, मैंने अपने Windows पर्यावरण चर को यह देखने के लिए खोला कि क्या कोई% HOME चर था और वहाँ था और इसे USERPATH% में सेट किया गया था। मैंने इसे हटा दिया, लेकिन इससे मेरी समस्या हल नहीं हुई। शायद इसे पुनः आरंभ करने की आवश्यकता है?
gsingh2011

1
क्या आपने इसे सिस्टम कंट्रोल पैनल से, या विंडोज कमांड शेल का उपयोग करके हटाया था set HOME=? सिस्टम कंट्रोल पैनल का उपयोग करना काम करने की अधिक संभावना है, लेकिन तब भी पुनरारंभ करना आवश्यक हो सकता है।
कीथ थॉम्पसन

मैंने इसे प्रारंभ मेनू में कंप्यूटर पर राइट क्लिक करके, गुणों पर क्लिक करके, उन्नत सिस्टम सेटिंग्स पर क्लिक करके, फिर पर्यावरण चर और फिर होम को हटाकर हटा दिया। एक पुनरारंभ आवश्यक था। अब साइगविन सही घर निर्देशिका लोड करता है। सहायता के लिए धन्यवाद।
gsingh2011

1

यदि आपके पास एक .profile या .bash_profile है, जो लॉगिन शेल्स पर उपलब्ध है, और आपको पास होने के बाद एक लॉगिन शेल मिलता है --login। यदि आप स्रोत .profile, तो bash स्रोत .bashrc नहीं करेगा ।

मैं डालने की कोशिश करूँगा:

[ -f $HOME/.bashrc ] && source $HOME/.bashrc

अपने .profile में, देखें कि क्या मदद करता है। आपके .bashrc को अभी भी अन्य गैर-लॉगिन शेल इनवॉइस में सामान्य के रूप में, खट्टा होना चाहिए।

और -iमार के पास नहीं है ; आपको इसकी आवश्यकता नहीं है। बैश तरह के हैक्स, जो आप -iकमांड लाइन पर दिए गए दिखावा करते हैं ।


मेरे .bash_profile और .profile में कोड की समान लाइनें हैं। मेरा अद्यतन प्रश्न देखें।
gsingh2011

क्षमा करें, @Rich Homolka, लेकिन मैं जानना चाहूंगा कि आप ऐसा क्यों कहते हैं कि -iयह आवश्यक नहीं है। धन्यवाद।
शोलाजियो डी एरियेरेज़

@SopalajodeArrierez यदि आपके पास एक इंटरैक्टिव (स्क्रिप्ट नहीं है, लेकिन एक टर्मिनल पर सक्रिय है) शेल, बैश का दावा है कि आपने इसे -iकमांड लाइन पर दिया था। बैश शेल विंडो खोलने की कोशिश करें, फिर echo $-, आपको i(संभवतः अन्य झंडे के बीच) देखना चाहिए
रिच होमोलका

1

मैंने उसी व्यवहार का अनुभव किया - शायद गिट (विंडोज) स्थापित होने के बाद।

सिस्टम सेटिंग में मुझे उपयोगकर्ता चर HOME = C: \ Users \ me मिला है और इसे घर = D: \ home पर रीसेट कर दिया है

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