बैश स्टार्टअप फाइलों से शेल रीडिंग क्यों नहीं है?


0

मैं सिर्फ अपने को जोड़ने का सरल कार्य करने की कोशिश कर रहा हूं माई एसक्यूएल PATH चर की निर्देशिका ताकि मैं इसका उपयोग कर सकूं mysql, आदि मेरे मैक ओएस एक्स 10.6.6 (हिम तेंदुए) पर मेरे टर्मिनल में कमांड। फेर बदल के बाद .profile, .bash_profile, और यहां तक ​​कि एक बनाने के लिए .bashrc, और यह सुनिश्चित करते हुए कि मेरे पथ को सही ढंग से इनपुट किया गया है, हर बार जब मैं दौड़ने की कोशिश करता हूं mysql आज्ञा, या मार

echo $PATH

मुझे वही सटीक परिणाम देता है:

/Users/GabbAHH/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/bin:/Users/GabbAHH/.rvm/gems/ruby-1.9.2-p136@global/bin:/Users/GabbAHH/.rvm/rubies/ruby-1.9.2-p136/bin:/Users/GabbAHH/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

जैसा कि आप देख सकते हैं, कोई MySQL नहीं। बाद में, मुझे एहसास हुआ कि यह वास्तव में समस्या नहीं है क्योंकि मैंने उन तीनों फाइलों को अपने से हटा दिया है /Users/GabbAHH/ उपयोगकर्ता निर्देशिका, और मुझे अभी भी वही परिणाम मिलता है!

अभी, मेरी स्टार्टअप फ़ाइलों के अंदर की स्क्रिप्ट इस तरह दिखती है:

export PATH=/usr/local/mysql/bin:$PATH

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

क्या मैंने ऐसा कुछ किया है जिससे मेरा टर्मिनल इन स्टार्टअप फाइलों को बायपास कर सके? क्या यह सिर्फ पढ़ने से है /etc/profile फ़ोल्डर?

क्या वही परिणाम देता है? बावजूद, मैंने उन्हें इंटरचेंज किया है।

इसके अलावा, मैं कैसे बताऊं कि मैं एक इंटरैक्टिव या गैर-इंटरैक्टिव शेल का उपयोग कर रहा हूं, और लॉग-इन / गैर लॉग-इन शेल? मैं अपना पासवर्ड इनपुट करने के लिए संकेत के बिना फ़ोल्डर आदि बनाने में सक्षम प्रतीत होता हूं, हालांकि मुझे याद है कि मुझे पहले करना था sudo स्थापित करते समय बहुत सारी कमांड जवाहरात रूबी के लिए, आदि। इसके अलावा, MySQL को चालू / बंद करते समय मुझे अपना पासवर्ड इनपुट करने की आवश्यकता थी।


क्या यह स्टार्टअप स्क्रिप्ट के बाहर काम करता है?
Orbit

@ लेखन के बजाय चिल्लाना आपका बहुत बहुत धन्यवाद एक बेहतर विकल्प होगा स्वीकार करना उनके जवाब के बगल में हरे रंग के चेकमार्क पर क्लिक करके उनका जवाब, यह इंगित करने के लिए कि वह आपकी समस्या को हल करने में मदद करता है;
Yi Jiang

जवाबों:


2

रख दो:

echo HELLO, I AM HERE

अपने स्टार्टअप स्क्रिप्ट में और सामान्य के अनुसार लॉगिन करें।

यदि आप पाते हैं कि स्ट्रिंग है नहीं तब प्रिंट करना, हां, आप उस स्क्रिप्ट को दरकिनार कर रहे हैं।

उससे परे, आपको हमें बताना चाहिए कौन कौन से स्क्रिप्ट आप इसे तब से डाल रहे हैं bash कुछ ... बल्कि चमत्कारिक है ... यह तय करने के नियम कि कौन सी स्क्रिप्ट चलती है :-) आप इसका विवरण प्राप्त कर सकते हैं INVOCATION का संभाग man bash। मेरा विशेष संस्करण लगभग 50 लाइनों के लिए आगे बढ़ता है (और वह 150-कॉलम के साथ है xterm ) इसलिए मैं आपको यहाँ पोस्ट करके बोर नहीं करूँगा।

यह कहना जटिल है।

उदाहरण के लिए, आपको इस तथ्य से काट दिया जा सकता है कि bash केवल निष्पादित करेगा प्रथम का ~/.bash_profile, ~/.bash_login, तथा ~/.profile यह मौजूद है और पठनीय है। यह एक गैर-इंटरैक्टिव शेल हो सकता है जहां नियम अलग-अलग हैं। आप के साथ खोल चल सकता है --noprofile या --norc या --rcfile=whatever या --posix

संभावनाएं, जबकि अंतहीन नहीं, बहुत कष्टप्रद हैं।


आपकी प्रतिक्रिया के लिए धन्यवाद! जब मैं टर्मिनल खोलता हूं (कोई लॉग-इन नहीं) तो मुझे "इको हेलो, आई एम हियर" दर्ज करते समय "HELLO, I AM HERE" मिलता है। तो, इसका मतलब यह है कि स्टार्टअप फ़ाइलों का उपयोग करने के लिए स्क्रिप्ट को बायपास नहीं किया जा रहा है? फिर से, मुझे नहीं लगता कि मेरा टर्मिनल उन 3 aforementioned स्टार्टअप फ़ाइलों को पढ़ रहा है, क्योंकि मुझे प्रतिध्वनि $ PATH में समान परिणाम मिला, जब मैंने उन्हें अपने घर उपयोगकर्ता धारक से पूरी तरह से हटा दिया। मुझे यकीन नहीं है कि आप मंगलाचरण से क्या मतलब है। मैंने "मैन बैश" में प्रवेश किया, जो पहले रिक्त लाइनों की पंक्तियों को प्रिंट करता था, और फिर कुछ विवरणों में शामिल नहीं होते हैं

अगर आप डालते हैं echo स्टार्टअप फ़ाइल में और टर्मिनल ने इसे प्रिंट किया जब यह शुरू हुआ, तब यह है प्रक्रिया में है। स्क्रिप्ट में जहां आप mysql को पथ से जोड़ते हैं, उससे पहले echo XYZZY और रखें echo $PATH इसके बाद।

आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद paxdiablo। मैंने वह भी नहीं किया, जो आपने पिछली बार मुझसे कहा था, लेकिन मैंने एक-एक करके हेलो, आई एएम एचईआर स्क्रिप्ट को अपनी स्टार्टअप स्क्रिप्ट फाइलों से हटा दिया और इसे नीचे .bash_profile पर पढ़ा जा रहा है। अच्छी खबर यह है, उन सभी को पूरी तरह से हटाने के बाद, मेरे MySQL कमांड अब काम करते हैं! लेकिन जो परेशानी वाली बात है, मुझे नहीं पता कि यह अब क्यों काम करता है क्योंकि मेरे पास पहले जैसी ही स्क्रिप्ट है। मैंने अपना कंप्यूटर पुनरारंभ भी नहीं किया है। मैंने अभी-अभी इको XZZY और $ PATH को .bash_profile में प्रवेश किया है और मुझे प्राप्त हुआ है

XYZZY / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / local / git / bin: / usr / X11 / bin टाइपिंग इन इको $ PATH अभी भी समान चीज़ को हटाता है पहले। इसका मतलब है कि मैं अभी भी कहीं भी सूचीबद्ध MySQL निर्देशिका नहीं देख रहा हूँ! यह मेरा .bash_profile वर्तमान में है: गूंज XYZZY प्रतिध्वनि $ पाथ निर्यात पाथ = / usr / local / bin: / usr / local / sbin: / usr / स्थानीय / mysql / bin: $ PATH [[-s ”$ HOME / .rvm / लिपियों / आरवीएम "]] & amp; & amp; । "$ HOME / .rvm / script / rvm" # यह RVM को शेल सेशन में लोड करता है ।export इससे भी अधिक परेशान करने वाली बात यह है कि मैं आपकी दो लाइनों को हटाने के समान परिणाम को पुन: पेश नहीं कर सकता, मुझे वही मिला ... ।

bash: कमांड को MySQL कमांड टाइप करते समय फिर से एरर नहीं मिला, लेकिन बाद में, जब मैंने रीड किया, रेसेव किया, रिमूव किया, रेसेव किया, यह फिर से काम करता है! ऐसा लगता है कि यह मेरे मन का है, मेरे दिमाग की कीमत पर!

2

मेरा मुद्दा एक .bash_profile का अस्तित्व था, इसलिए मैंने वहां बदलाव करके अपने बदलाव किए। यह सब मेरे JAVA_HOME और GROOVY_HOME सेट करने से पहले कर रहा था ... इसलिए मैंने उस फ़ाइल के अंत में अपने परिवर्तन जोड़ दिए हैं और अब सभी बढ़िया काम कर रहे हैं।

धन्यवाद!

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