बैश मैनुअल से
उपनाम की परिभाषा और उपयोग से संबंधित नियम कुछ भ्रामक हैं। बैश हमेशा उस लाइन पर किसी भी कमांड को निष्पादित करने से पहले इनपुट की कम से कम एक पूरी लाइन पढ़ता है। उपनाम का विस्तार तब किया जाता है जब एक कमांड पढ़ा जाता है, न कि जब इसे निष्पादित किया जाता है। इसलिए, दूसरी पंक्ति के रूप में एक ही पंक्ति में प्रदर्शित होने वाली एक उपनाम की परिभाषा तब तक प्रभावी नहीं होती है जब तक कि इनपुट की अगली पंक्ति नहीं पढ़ी जाती है। उस पंक्ति पर उपनाम की परिभाषा का अनुसरण करने वाले आदेश नए उपनाम से प्रभावित नहीं होते हैं। यह व्यवहार भी एक समस्या है जब कार्यों को निष्पादित किया जाता है। उपनाम तब विस्तारित होते हैं जब फ़ंक्शन परिभाषा को पढ़ा जाता है, न कि फ़ंक्शन को निष्पादित करते समय , क्योंकि एक फ़ंक्शन परिभाषा स्वयं एक यौगिक कमांड होती है। एक परिणाम के रूप में, किसी फ़ंक्शन में परिभाषित उपनाम तब तक उपलब्ध नहीं होते हैं जब तक कि फ़ंक्शन निष्पादित नहीं किया जाता है । सुरक्षित होने के लिए, हमेशा एक अलग लाइन पर उर्फ परिभाषाएं रखें, और कंपाउंड कमांड में उपनाम का उपयोग न करें।
एक फ़ंक्शन परिभाषा को पढ़ने पर दो वाक्य "उपनामों का विस्तार किया जाता है, जब फ़ंक्शन निष्पादित नहीं किया जाता है" और "फ़ंक्शन में परिभाषित उपनाम तब तक उपलब्ध नहीं होते हैं जब तक कि फ़ंक्शन निष्पादित नहीं किया जाता है" एक दूसरे के विपरीत प्रतीत होते हैं।
क्या आप बता सकते हैं कि उनका क्या मतलब है?
.bashrc
बहुत ऊपर फाइलों में उपनामों का सामना करना पड़ा है ।