Відповіді, які ви знайшли на 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, хоча він скидає поділ поля.