พารามิเตอร์และการขยายประเภทอื่น ๆ จะดำเนินการเมื่อคำสั่งถูกอ่านก่อนที่จะถูกดำเนินการ
รุ่นแรกLANG=Ja_JP bash -c "echo $LANG"
, เป็นคำสั่งเดียว หลังจากถูกวิเคราะห์คำเช่น$LANG
นี้ให้ขยายเป็นen_US
ก่อนที่จะมีการดำเนินการใด ๆ เมื่อbash
เสร็จสิ้นการประมวลผลอินพุตส้อมกระบวนการเพิ่มต่อสิ่งแวดล้อมตามที่คาดไว้แล้วรันLANG=Ja_JP
bash -c echo en_US
คุณสามารถป้องกันการขยายตัวที่มีราคาเดียวคือเอาท์พุทLANG=Ja_JP bash -c 'echo $LANG'
Ja_JP
โปรดทราบว่าเมื่อคุณมีการกำหนดตัวแปรเป็นส่วนหนึ่งของคำสั่งการมอบหมายจะมีผลกับสภาพแวดล้อมของคำสั่งนั้นเท่านั้นและไม่ใช่ของเชลล์
รุ่นที่สองLANG=Ja_JP; bash -c "echo $LANG"
เป็นจริงสองคำสั่งแยกดำเนินการตามลำดับ สิ่งแรกคือการกำหนดตัวแปรแบบง่ายโดยไม่มีคำสั่งดังนั้นมันจะมีผลกับเชลล์ปัจจุบันของคุณ
ดังนั้นทั้งสองตัวอย่างของคุณมีพื้นฐานที่แตกต่างแม้จะมีความแตกต่างตื้น ๆ ;
ของซิงเกิ้ล
ปิดหัวข้อทั้งหมด แต่ฉันขอแนะนำให้ผนวกการ.UTF-8
ตั้งค่าเมื่อLANG
ใด ปัจจุบันไม่มีเหตุผลที่ดีที่จะไม่ใช้ Unicode ในศตวรรษที่ 21