มันขึ้นอยู่กับเปลือกหอยเป็นอย่างมาก ถ้าเราดูเฉพาะ 4 เชลล์หลักตระกูล (Bourne, csh, rc, fish):
ครอบครัวบอร์น
นั่นคือเปลือกบอร์นและตัวแปรทั้งหมดและksh, bash, ash/ dash, ,zshyash
var=23: นั่นคือไวยากรณ์การกำหนดตัวแปรที่ถูกต้อง: คำที่ประกอบด้วยตัวอักษรที่ไม่มีเครื่องหมายอัญประกาศตัวเลขหรือขีดล่างตามด้วยเครื่องหมายอัญประกาศ=ที่ไม่ปรากฏที่ปรากฏก่อนอาร์กิวเมนต์คำสั่ง (นี่คือตัวของมันเอง)
var =23ที่varคำสั่งกับ=23เป็นอาร์กิวเมนต์ (ยกเว้นในzshที่=somethingเป็นผู้ประกอบการพิเศษที่จะขยายไปยังเส้นทางของsomethingคำสั่ง. ที่นี่คุณจะมีแนวโน้มที่จะได้รับข้อผิดพลาดในขณะที่23ไม่น่าจะเป็นชื่อคำสั่งที่ถูกต้อง)
var= 23: ได้รับมอบหมายตามด้วยชื่อคำสั่งvar= 23นั่นหมายถึงการดำเนินการ23โดยvar=ส่งผ่านไปยังสภาพแวดล้อม ( varตัวแปรสภาพแวดล้อมที่มีค่าว่าง)
var = 23, varสั่งอาหารด้วย=และ23เป็นอาร์กิวเมนต์ ลองด้วยecho = 23เช่น
ครอบครัว Csh
cshtcshและ การกำหนดตัวแปรที่มีกับset var = valueไวยากรณ์สำหรับตัวแปรสเกลาร์set var = (a b)สำหรับอาร์เรย์setenv var valueสำหรับตัวแปรสภาพแวดล้อม@ var=1+1สำหรับการกำหนดและการประเมินผลทางคณิตศาสตร์
ดังนั้น:
var=23เป็นเพียงการเรียกใช้var=23คำสั่ง
var =23กำลังเรียกใช้varคำสั่งด้วย=23อาร์กิวเมนต์
var= 23กำลังเรียกใช้var=คำสั่งด้วย23อาร์กิวเมนต์
var = 23กำลังเรียกใช้varคำสั่งด้วย=และ23เป็นอาร์กิวเมนต์
ครอบครัว Rc
ว่าrc, และes akangaในเชลล์เหล่านั้นตัวแปรคืออาร์เรย์และการกำหนดค่าด้วยvar = (foo bar)โดยvar = fooย่อสำหรับvar = (foo)(อาร์เรย์ที่มีหนึ่งfooองค์ประกอบ) และvar =สั้นสำหรับvar = ()(อาร์เรย์ที่ไม่มีองค์ประกอบให้ใช้var = ''สำหรับอาร์เรย์ที่มีหนึ่งองค์ประกอบที่ว่างเปล่า)
ไม่ว่าในกรณีใดช่องว่าง (เว้นวรรคหรือแท็บ) =จะได้รับอนุญาตและเป็นตัวเลือก ดังนั้นในเปลือกหอยบรรดาผู้ที่ 4 คำสั่งที่เทียบเท่าและเทียบเท่ากับการที่จะกำหนดอาร์เรย์ที่มีองค์ประกอบหนึ่งเป็นvar = (23)23
ปลา
ในไวยากรณ์การกำหนดตัวแปรคือfish set var value1 value2เช่นเดียวกับในrcตัวแปรคืออาร์เรย์
ดังนั้นพฤติกรรมจะเหมือนกันกับcshยกเว้นว่าfishจะไม่ให้คุณเรียกใช้คำสั่งที่มี=ชื่อ หากคุณมีคำสั่งดังกล่าวคุณจะต้องเรียกใช้มันผ่านshตัวอย่างเช่น: sh -c 'exec weird===cmd'.
ดังนั้นทั้งหมดvar=23และvar= 23จะทำให้คุณมีข้อผิดพลาดvar =23จะเรียกvarคำสั่งด้วย=23เป็นอาร์กิวเมนต์และvar = 23จะเรียกvarคำสั่งด้วย=และ23เป็นอาร์กิวเมนต์