คำตอบที่คุณพบในการแลกเปลี่ยนสแต็คนั้นถูกต้องและบทช่วยสอนนี้ไม่ถูกต้อง คุณสามารถทดลองด้วยตัวเองหรือมองมันได้ในมาตรฐาน unset IFSเทียบเท่ากับการตั้งค่าเป็นค่าเริ่มต้นของ space-tab-newline ในขณะที่ว่างเปล่าIFSปิดการแยกฟิลด์อย่างมีประสิทธิภาพ
คุณสามารถดูหน้าของ Sven Mascheck บน 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 แม้ว่าจะรีเซ็ตการแยกฟิลด์