3 जून को आपने निम्नलिखित टिप्पणी पोस्ट की
@DavidAnderson तो अगर मैं सही ढंग से समझूं, तो निर्यात PATH चल रहा है ... एक इंटरैक्टिव शेल सत्र से केवल उस सत्र के लिए $ PATH को प्रभावित करता है और नए जोड़े गए पथ को कहीं भी सहेजा नहीं जाता है (और इसलिए कोई फ़ाइल नहीं है जहां नए जोड़े गए पथ को संपादित किया जा सकता है )। उदाहरण के लिए, यदि मैं PATH = / test: $ PATH का निर्यात करता हूं, लेकिन मेरा मतलब इसके बजाय / test_123 dir को निर्यात करना है, तो मेरा सबसे अच्छा विकल्प यह है कि हम गलत या परीक्षण dir युक्त फ़ाइल को खोजने और संपादित करने के बजाय एक नया सत्र शुरू करें। (क्योंकि ऐसी कोई फ़ाइल नहीं है)। सही बात?
आपकी टिप्पणी पर मेरी प्रतिक्रिया
बैश के लिए मैनुअल पेज से, मैंने निम्नलिखित निकाला है।
A parameter is an entity that stores values. It can be a name, a
number, or one of the special characters listed below under Special
Parameters. A variable is a parameter denoted by a name. A variable
has a value and zero or more attributes.
PATH
एक चर का नाम है। आम तौर पर, इस चर में केवल निर्यात विशेषता चालू होती है। निर्यात विशेषता पर्यावरण के माध्यम से बाद के आदेशों के लिए निर्यात के लिए एक चर चिह्नित करती है। export
आदेश निर्यात विशेषता को चालू करता है, लेकिन के मामले में PATH
चर, निर्यात विशेषता पहले से चालू है। इसलिए, के लिए PATH
परिवर्तनशील, अगले चार कमांड समतुल्य हैं।
PATH=/test:$PATH
export PATH=/test:$PATH
declare PATH=/test:$PATH
typeset PATH=/test:$PATH
आपकी टिप्पणी के लिए, आप सही हैं। ऐसी कोई फाइल नहीं है।
आपके द्वारा उल्लिखित प्रकार की गलती के मामले में, मुझे नहीं लगता कि एक नया सत्र शुरू करना सबसे अच्छा विकल्प होगा। मैं कमांड दर्ज करूंगा
declare -p PATH
और फिर आउटपुट को हाइलाइट करें। फिर आप अपने अगले कमांड के रूप में टेक्स्ट को काट और पेस्ट कर सकते हैं। रिटर्न कुंजी मारने से पहले, अपनी गलती को सुधारने के लिए अन्य कुंजियों का उपयोग करें।
इस विषय पर अधिक जानकारी के लिए, bash के लिए मैनुअल पेज देखें। या तो कमांड दर्ज करें
man bash
या साइट पर जाएँ: बैश - जीएनयू बॉर्न-अगेन शेल ।
आपके संपादन के जवाब में:
हां, जब आप रिबूट करते हैं तो आपको अपने पैथ वेरिएबल में हारने / परीक्षण करने का अनुमान है। यही कारण है कि आपको एक लगाने की आवश्यकता है export
अपने में कमान ~./profile
फ़ाइल।
मूल उत्तर:
तुम उलझन में लग रहे हो जब ~/.bashrc
, ~/.bash_profile
, तथा ~/.profile
फ़ाइलें निष्पादित करें। शायद इससे मदद मिलेगी।
यहां बताया गया है कि मैंने अपना कंप्यूटर कैसे सेट किया है। मेरे पास तीन फाइलें हैं: ~/.profile
, ~/.bashrc
तथा ~/.bashcm
। यदि आप इनमें से किसी को याद कर रहे हैं, तो आप उन्हें बना सकते हैं।
जब मैं टर्मिनल एप्लिकेशन शुरू करता हूं या मेनू बार पर "शेल" से "नई विंडो" का चयन करता हूं, तो एक इंटरेक्टिव बैश लॉगिन शेल का उपयोग किया जाता है। यह खोल निष्पादित करता है ~/.profile
स्टार्टअप पर स्क्रिप्ट। आप स्थानापन्न कर सकते हैं ~/.bash_profile
या ~/.bash_login
के लिये ~./profile
यदि आप चाहते हैं। यदि एक इंटरएक्टिव बैश शेल जो कि लॉगिन शेल नहीं है, तो शेल पढ़ा जाता है और कमांड को निष्पादित करता है ~/.bashrc
। का उद्देश्य है ~/.bashcm
दोनों द्वारा निष्पादित की जाने वाली एक सामान्य स्क्रिप्ट प्रदान करना है ~/.profile
तथा ~/.bashrc
।
यहाँ एक उदाहरण है .profile
फ़ाइल
echo in .profile
source ~/.bashcm
export PATH=$PATH:~/bin
echo exit .profile
गूंज आदेशों का उद्देश्य स्क्रिप्ट निष्पादित होने पर वर्णन करना है। एक बार जब आप सहज हो जाते हैं, तो आप या तो टिप्पणी कर सकते हैं या उन्हें हटा सकते हैं। .profile
फ़ाइल निष्पादित होती है .bashcm
स्क्रिप्ट, फिर पथ परिवर्तन को संशोधित करता है और बाहर निकलता है। एक उदाहरण .bashcm
फ़ाइल नीचे दिखाई गई है
echo in bashcm
PS1='\h:\W \u\$ '
alias home='cd ~'
echo exit .bashcm
इको कमांड के अलावा, .bashcm
केवल संकेत और एक उपनाम सेट करता है। उदाहरण .bashrc
नीचे दिखाई गई फ़ाइल बस निष्पादित होती है .bashcm
स्क्रिप्ट। फिर से प्रतिध्वनि आदेश केवल दृष्टांत उद्देश्यों के लिए हैं।
echo in .bashrc
source ~/.bashcm
echo exit .bashrc
अगर मैं टर्मिनल एप्लिकेशन शुरू करता हूं और कमांड दर्ज करता हूं
echo $PATH
alias
bash
echo $PATH
alias
in the window, I get the following.
Last login: Wed May 27 14:48:19 on ttys000
in .profile
in bashcm
exit .bashcm
exit .profile
Steelhead:~ davidanderson$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/davidanderson/bin
Steelhead:~ davidanderson$ alias
alias home='cd ~'
Steelhead:~ davidanderson$ bash
in .bashrc
in bashcm
exit .bashcm
exit .bashrc
Steelhead:~ davidanderson$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/davidanderson/bin
Steelhead:~ davidanderson$ alias
alias home='cd ~'
Steelhead:~ davidanderson$