समस्याओं का एक जोड़ा उठता है जब / स्रोत को पुनः लोड करने की कोशिश कर रहा है ~ / .profile फ़ाइल। [यह उबंटू लिनक्स को संदर्भित करता है - कुछ मामलों में आदेशों का विवरण अलग होगा]
- क्या आप इसे सीधे टर्मिनल या स्क्रिप्ट में चला रहे हैं?
- आप इसे एक स्क्रिप्ट में कैसे चलाते हैं?
विज्ञापन। 1)
इसे सीधे टर्मिनल में चलाने का मतलब है कि कोई उप-आधार नहीं बनाया जाएगा। तो आप दो कमांड का उपयोग कर सकते हैं:
source ~/.bash_profile
या
. ~/.bash_profile
दोनों ही मामलों में यह .profile फ़ाइल की सामग्री के साथ पर्यावरण को अद्यतन करेगा।
Ad 2) आप कॉल करके या तो कोई भी बैश स्क्रिप्ट शुरू कर सकते हैं
sh myscript.sh
या
. myscript.sh
पहले मामले में यह एक सबस्क्रिप्शन बनाएगा जो आपके सिस्टम के पर्यावरण चर को प्रभावित नहीं करेगा और वे केवल सब-प्रोसेस प्रक्रिया के लिए दिखाई देंगे। उपधारा आदेश समाप्त करने के बाद निर्यात आदि में से कोई भी लागू नहीं किया जाएगा। यह एक इतिहास है और समय की एक बहुत खो जाने के लिए विकासकर्ताओं की एक बहुत कुछ है।
वैश्विक वातावरण के प्रभाव के लिए आपकी स्क्रिप्ट में लागू किए गए आपके परिवर्तनों के लिए स्क्रिप्ट के साथ चलना होगा
.myscript.sh
आदेश।
यह सुनिश्चित करने के लिए कि आप स्क्रिप्ट उप-भाग में नहीं चल रहे हैं आप इस फ़ंक्शन का उपयोग कर सकते हैं। (फिर से उदाहरण उबंटू खोल के लिए है)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
मुझे आशा है कि यह कुछ सामान्य गलतफहमियों को दूर करता है! : डी गुड लक!