स्टैक एक्सचेंज पर आपको जो उत्तर मिले हैं वे सही हैं और यह ट्यूटोरियल गलत है। आप अपने आप से प्रयोग कर सकते हैं या इसे मानक में देख सकते हैं । एक अनसेट 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 में रीसेट नहीं करता है।