शेल लिपि में तुच्छ वर्ण क्यों बचते हैं?


23

मैंने अभी एक विरासत खोल स्क्रिप्ट खोली (सोलारिस पर पुरानी ksh88 में लिखी गई) और निम्नलिखित कोड में सभी को दोहराया गया:

[ -f $myfile ] && \rm -f $myfile

भागने के पीछे के हमले से मुझे अजीब लगा।

मुझे पता है कि यह जानबूझकर किया गया है, क्योंकि इस तरह का (स्पष्ट रूप से बेकार) बचना पूरे कोड में दोहराया जाता है। मूल लेखक लंबे समय से चला गया है, मैं उससे पूछने के लिए उसके संपर्क में नहीं आ सकता।

क्या यह केवल लेखक का एक अजीब सा संवाद है या क्या यह किसी प्रकार का अपभ्रंश अच्छा अभ्यास है जो किसी समय में समझ में आता है? या शायद वास्तव में चीजों को करने का अनुशंसित तरीका है और मैं पूरी तरह से कुछ याद कर रहा हूं?


3
हालांकि इसका एक अच्छा कारण है, इस पद्धति का उपयोग करके स्क्रिप्ट में अन्य सुरक्षा प्रदान करना वह नहीं है जिसे मैं "अनुशंसित" कहूंगा। यह स्क्रिप्ट के शीर्ष पर उपनाम को स्पष्ट करने या rmपूर्ण पथ द्वारा आह्वान करने के लिए पर्याप्त होगा ।
सोरपीगल

जवाबों:



5

यह आमतौर पर आरएम के लिए कुछ सुरक्षा उपायों को फेंकने के लिए अच्छा अभ्यास है, जो आमतौर पर अलियासिंग द्वारा प्राप्त किया जाता है। बहुउपयोगी वातावरण में, आप अक्सर इनमें से कई सुरक्षा देखेंगे।

शेल स्क्रिप्टिंग प्रैक्टिशनर के लिए, अक्सर इन सुरक्षा उपायों को अक्षम करने के लिए उपयोगी होता है, वे जानते हैं कि वे क्या कर रहे हैं। यह, जैसा कि उल्लेख किया गया है, कमांड के साथ पूर्ववर्ती द्वारा पूरा किया गया है \

@ सोरपिगल के सुझाव के विपरीत, मैं निश्चित रूप से एलियंस को परेशान करने के खिलाफ सलाह दूंगा, ऐसा न हो कि स्क्रिप्ट उपयोगकर्ता को उनके सुरक्षा उपायों को वापस देने में विफल हो। इसके अलावा, पूर्ण पथ का उपयोग करना भी नासमझी है क्योंकि rm किसी कारण से सहायक पथ में हो सकता है - अर्थात GNU rm बनाम BSD एनएम। एक सख्त पथ के साथ इसे ओवरराइड करने के लिए कई आर्किटेक्चर, पर्यावरण और उपयोगकर्ताओं को पैठ करने और संभालने के उद्देश्य को पूरा करना होगा।


3
आम होने के बावजूद, अलियासिंग rmएक अच्छा नहीं है , लेकिन काफी खराब और दुर्भाग्यपूर्ण अभ्यास है।
जूलियाग्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.