स्टैक एक्सचेंज पर आपको जो उत्तर मिले हैं वे सही हैं और यह ट्यूटोरियल गलत है। आप अपने आप से प्रयोग कर सकते हैं या इसे मानक में देख सकते हैं । एक अनसेट IFS
इसे स्पेस-टैब-न्यूलाइन के डिफ़ॉल्ट मान पर सेट करने के बराबर है, जबकि एक खाली IFS
प्रभावी रूप से फ़ील्ड विभाजन को बंद कर देता है।
आप ऐतिहासिक कार्यान्वयन के बारे में IFS पर स्वेन मस्कैच के पेज से परामर्श कर सकते हैं । कुछ ऐतिहासिक गोले पसंद नहीं आए unset IFS
, और ksh के एक बहुत पुराने संस्करण ने इसे एक खाली की तरह व्यवहार किया, IFS
लेकिन सभी आधुनिक गोले और अधिकांश पुराने गोले IFS
डिफ़ॉल्ट मान की तरह एक अशांति का इलाज करते हैं ।
आपको अपनी स्क्रिप्ट IFS=
तब तक शुरू नहीं करनी चाहिए जब तक कि आप फ़ील्ड विभाजन को बंद नहीं करना चाहते (जो कि एक उचित निर्णय हो सकता है - लेकिन ध्यान दें कि आपको ग्लोबिंग से बचने के लिए प्रतिस्थापन के आसपास दोहरे उद्धरण लगाने की आवश्यकता है, जब तक कि आप set -f
भी बंद न करें )। डिफ़ॉल्ट मान को रीसेट करने के लिए, का उपयोग करें unset IFS
। यह बहस योग्य है कि क्या यह एक स्क्रिप्ट की शुरुआत में उपयोगी है; अन्य बहुत सारी बुरी चीजें हैं जैसे PATH
कि डोडी जो कॉलर आपकी स्क्रिप्ट को गलत बनाने के लिए कर सकता है।
यह ट्यूटोरियल रीसेट करने की सलाह भी देता है PATH
। यह आमतौर पर बुरी सलाह है। ज्यादातर मामलों में, आप भविष्यवाणी नहीं कर सकते कि सही खोज पथ क्या है, लेकिन उपयोगकर्ता जानता है। तुम्हें कैसे पता कि क्या करना /usr/local/bin
या /home/bob/bin
एक प्राचीन यूनिक्स पर उपयोगिताओं के बग तय संस्करणों में शामिल है जहां में लोगों को /usr/bin
गाड़ी कर रहे हैं? क्या आप वास्तव में यह पता लगाने के लिए कि क्या /usr/xpg6/bin
आगे रखना चाहते हैं सभी तर्क एम्बेड करना चाहते हैं /bin
? आपको किस पद पर चाहिए /usr/gnu/bin
? जब तक आपकी स्क्रिप्ट एक विशिष्ट प्रणाली को लक्षित न करे, तब तक PATH को रीसेट न करें।
मैंने इस ट्यूटोरियल को नहीं पढ़ा है, लेकिन मैंने एक चीज़ की जाँच की है: यह आपको शुरू से ही सही नहीं बताता है कि हमेशा चर प्रतिस्थापन और कमांड प्रतिस्थापन के आसपास दोहरे उद्धरण दें। इसलिए मुझे नहीं लगता कि यह ट्यूटोरियल अच्छा है।
unset IFS
हालांकि यह फ़ील्ड-विभाजन को रीसेट करता है, तो IFS को अपने डिफ़ॉल्ट मान को bash में रीसेट नहीं करता है।