कभी-कभी मैं $PROJECT_HOME/*प्रोजेक्ट में सभी फ़ाइलों को हटाने के लिए उपयोग करता हूं । जब पर्यावरण चर, PROJECT_HOMEसेट नहीं किया जाता है (क्योंकि मैंने किया था suऔर नए उपयोगकर्ता के पास यह पर्यावरण चर सेट नहीं है), यह रूट फ़ोल्डर से सभी फ़ाइलों को हटाना शुरू कर देता है। यह सर्वनाश है।
bashजब मैं शेल में अपरिभाषित पर्यावरण चर का उपयोग करता हूं, तो मैं त्रुटि फेंकने के लिए कैसे कॉन्फ़िगर कर सकता हूं ?
[ -z "$VAR" ]एक असिंचित के साथ VARभी काम करता है। आरंभीकरण सिर्फ अवांछनीय व्यवहार दिखाने के लिए था - मेरा कहना है, यदि आपके संस्करण कभी भी खाली तारों के लिए आरंभीकृत नहीं होते हैं, तो आप जिस भी तरीके से और आप rm -r "$PROJECT_HOME"/*गलती से भरोसा करते हैं set -u, आपको "एपोकैलिक" व्यवहार मिलेगा। IHMO, आपके कंप्यूटर की संपूर्ण सामग्री की सुरक्षा करने के लिए क्षमा करने से सुरक्षित रहना बेहतर है। set -uसुरक्षित नहीं है।
PROJECT_HOME=/etc? बस एक खाली मूल्य के लिए जाँच करना प्रलय को रोकने के लिए पर्याप्त नहीं है। रूट के रूप में चलने के दौरान आपको अविश्वसनीय उपयोगकर्ताओं से चर का उपयोग नहीं करना चाहिए।
set -uजो चाहोगे, करोगे।