ฉันไม่เคยพบเชลล์สไตล์ Bourne ที่อนุญาตให้ใช้-
ในชื่อตัวแปร รองรับเฉพาะตัวอักษร ASCII (ในทั้งสองกรณี) _
และตัวเลขและตัวอักษรตัวแรกต้องไม่เป็นตัวเลข
หากคุณมีโปรแกรมที่ต้องการตัวแปรสภาพแวดล้อมที่ไม่ตรงกับข้อ จำกัด ของเชลล์ให้เปิดใช้งานด้วยenv
โปรแกรม
env 'strange-name=some value' myprogram
โปรดทราบว่าเชลล์บางตัว (เช่นmodern dash , mksh, zsh) ลบตัวแปรที่มีชื่อที่พวกเขาไม่ชอบจากสภาพแวดล้อม ( Shellshockทำให้คนระมัดระวังเกี่ยวกับชื่อตัวแปรสภาวะแวดล้อมดังนั้นข้อ จำกัด น่าจะเข้มงวดมากขึ้นเมื่อเวลาผ่านไปไม่อนุญาตมากขึ้น) ดังนั้นหากคุณต้องการส่งผ่านตัวแปรที่ชื่อมีอักขระพิเศษลงในโปรแกรมส่งผ่านโดยตรง โดยไม่มีเชลล์ระหว่าง ( env 'strange-name=some value' sh -c'…; myprogram'
อาจหรืออาจไม่ทำงาน)