การขยายตัวตัวหนอนถูกกำหนดโดย POSIX เป็น:
A "ตัวหนอนคำนำหน้า" ประกอบด้วยunquoted <หนอน> ตัวอักษรที่จุดเริ่มต้นของคำตามด้วยทุกตัวอักษรก่อนหน้าแรก unquoted <เฉือน> ในคำหรือตัวอักษรทั้งหมดที่อยู่ในคำว่าถ้าไม่มี < เฉือน> ในการมอบหมายสามารถใช้คำนำหน้า tilde หลายคำได้: [... ] ตาม <equals-sign> ของการมอบหมายต่อจาก <colon> ที่ไม่มีเครื่องหมายหรือทั้งสองอย่าง [... ] หากไม่มีตัวอักษรใด ๆ ในเครื่องหมายคำนำหน้าตัวหนอน tilde ตัวอักษรในเครื่องหมายคำนำหน้าตัวหนอนหลังเครื่องหมาย <tilde> จะถือว่าเป็นชื่อล็อกอินที่เป็นไปได้จากฐานข้อมูลผู้ใช้ [... ] หากชื่อล็อกอินเป็นโมฆะ (นั่นคือคำนำหน้าตัวหนอนมีเพียงตัวหนอนเท่านั้น) ตัวหนอนหน้าตัวหนอนจะถูกแทนที่ด้วยค่าของตัวแปร HOME หากหน้าแรกไม่ได้ตั้งค่าผลลัพธ์จะไม่ถูกระบุ [ ... ]
ดังนั้นคำตอบที่สั้นที่สุดคือ "เพราะมันถูกกำหนดไว้อย่างนั้น": การอ้างอิงอักขระใด ๆ ในคำนำหน้ารวมถึงการ~
หยุดการขยายตัว
นอกจากนี้ยังกำหนดการขยายตัวเช่นเดียวกับที่เกิดขึ้นในคำเดียวดังนั้นการอ้างจะไม่จำเป็น:
ชื่อพา ธ ที่เป็นผลมาจากการขยายตัวของตัวหนอนจะได้รับการปฏิบัติราวกับว่ายกมาเพื่อป้องกันไม่ให้ถูกเปลี่ยนแปลงโดยการแยกสนามและการขยายชื่อพา ธ
ในกรณีที่พา ธ บางส่วนต้องการข้อความ แต่ส่วนที่เหลือเป็นคำนำหน้าตัวหนอนคุณสามารถรวมส่วนขยายตัวหนอนและข้อความธรรมดาได้โดยตรง:
$ cat ~/"file name with spaces"
ในวงกว้าง "ทำไม": เนื่องจากไม่มีการใช้เป็นไปได้สำหรับการแยกคำ~
ที่ควรจะเป็นพฤติกรรมเริ่มต้นมากกว่าที่จะต้องมีการอ้าง เพราะไม่จำเป็นต้องพูดมันการให้~
ความหมายพิเศษในเครื่องหมายคำพูดนั้นจะเป็นความยุ่งยากที่ไม่จำเป็น และแน่นอนด้วยเหตุผลทางประวัติศาสตร์หมายความว่าไม่สามารถเปลี่ยนแปลงได้ในขณะนี้แม้ว่าจะเป็นที่น่าพอใจก็ตาม