बैकस्लैश उर्फ विस्तार को दबा देगा, अर्थात यह मूल कमांड को निष्पादित करता है और सुनिश्चित करता है कि उपनाम संस्करण नहीं चलता है। लिपियों को अनजाने में उर्फ विस्तार के साथ चलाया जा सकता है जब सिस्टम ने सेट किया है shopt -s expand_aliases
(केवल BASH) या यदि इसका उपयोग करके निष्पादित किया जाता है source
।
./conda.sh # usually no alias expansion (unless `shopt -s expand_aliases` in BASH)
source ./conda.sh # alias expansion
. ./conda.sh # alias expansion
कुछ sysadmins एलियंस के साइड-इफेक्ट के खिलाफ एक निवारक उपाय के रूप में हर चीज में बैकस्लैश डालना पसंद करते हैं, बस इस मामले में यह अनजाने में कहीं और अलियास हो गया था और उर्फ विस्तार हो गया जैसा कि पहले बताया गया है। उदाहरण के लिए, यदि सिस्टम ने इसे alias dirname='dirname -z'
कहीं सेट किया है और स्थिति उपनाम को विस्तारित करने की अनुमति देती है, तो एक स्क्रिप्ट जो कि dirname को कॉल करने का प्रयास करती है dirname -z
, दुर्भाग्य से इसके बजाय कॉल करेगी , जो स्क्रिप्ट का इरादा नहीं था।
यदि निश्चितता है कि ऐसे उपनाम मौजूद नहीं हैं, तो हम सभी बैकस्लैश को हटा सकते हैं और इसे ठीक काम करना चाहिए।
वैकल्पिक रूप से, एक command
उपनाम को दबाने के लिए बैकस्लैश संस्करण के बजाय उपयोग कर सकता है । इस प्रकार, इसके बजाय \dirname
, कोई भी उपयोग कर सकता है command dirname
, जो अधिक पठनीय लग सकता है। (जैसे अंतर्निहित कमांड के लिए cd
, व्यक्ति को builtin
इसके बजाय उपयोग करना चाहिए )। मैं इसके बजाय इसे पसंद करता हूं, क्योंकि यह एक ही नाम के साथ-साथ किसी भी उपनाम के साथ फ़ंक्शन को भी बायपास करता है।