Відповіді, які ви знайшли на Stack Exchange, правильні, і цей підручник невірний. Ви можете експериментувати самостійно або шукати це в стандарті . Скидання IFSеквівалентно встановленню його за замовчуванням пробілу-вкладки-нового рядка, тоді як порожній IFSефективно вимикає поділ поля.
Ви можете ознайомитися на сторінці Sven Mascheck на IFS про історичні втілення. Кілька історичних оболонок не сподобалися unset IFS, і дуже стара версія ksh трактувала це як порожній, IFSале всі сучасні оболонки та більшість старих оболонок трапляють незрівнянно, IFSяк значення за замовчуванням.
Не слід починати свій сценарій, IFS=якщо ви не хочете вимкнути розділення поля (що може бути розумним рішенням, - але зауважте, що вам все-таки потрібно поставити подвійні лапки навколо підстановок, щоб уникнути глобалізації, якщо ви також не вимкнете це set -f). Щоб скинути значення за замовчуванням, використовуйте unset IFS. Дискусійно, чи корисно це на початку сценарію; Є багато інших поганих речей, таких як хитрість, PATHяку абонент може зробити, щоб ваш сценарій пішов не так.
Цей підручник також радить скинути PATH. Зазвичай це погані поради. У більшості випадків ви не можете передбачити, який правильний шлях пошуку, але користувач знає. Звідки ви знаєте, містять /usr/local/binчи /home/bob/binмістять виправлені помилки версії утиліт у стародавньому unix, де ті, що /usr/binє, баггі? Ви дійсно хочете вкласти всю логіку, щоб зрозуміти, чи потрібно /usr/xpg6/binвипереджати /bin? В яку позицію ви хочете /usr/gnu/bin? Не скидайте PATH, якщо ваш сценарій не націлений на певну систему.
Я не читав цей підручник, але я перевірив одне: це не говорить вам з самого початку, щоб завжди ставити подвійні лапки навколо змінних підстановок і підстановок команд. Тому я не думаю, що цей підручник є гарним.
unset IFSне скидає IFS до значень за замовчуванням у bash, хоча він скидає поділ поля.