ตัวแปรที่เอ็กซ์พอร์ตจะถูกนำไปใช้ในสภาพแวดล้อมของคำสั่งที่ดำเนินการโดยเชลล์ที่เอ็กซ์พอร์ตในขณะที่ตัวแปรที่ไม่ถูกเอ็กซ์พอร์ตเป็นโลคัลสำหรับการเรียกใช้เชลล์ปัจจุบัน จากexport
หน้าคน:
เชลล์จะให้แอตทริบิวต์การส่งออกกับตัวแปรที่เกี่ยวข้องกับชื่อที่ระบุซึ่งจะทำให้พวกเขาอยู่ในสภาพแวดล้อมของคำสั่งที่ดำเนินการในภายหลัง
set
แสดงผลสภาพแวดล้อมปัจจุบันซึ่งรวมถึงตัวแปรที่ไม่ส่งออกในท้องถิ่นใด ๆ env
ใช้เพื่อเรียกใช้โปรแกรมในสภาพแวดล้อมใหม่และไม่มีข้อโต้แย้งใด ๆ ที่จะแสดงผลว่าสภาพแวดล้อมใหม่จะเป็นเช่นไร เนื่องจากenv
กำลังสร้างสภาพแวดล้อมใหม่จะมีเพียงตัวแปรที่ส่งออกเท่านั้นที่ผ่านมาเช่นเดียวกับกรณีของโปรแกรมใด ๆ ที่เปิดตัวจากเชลล์นั้น ตัวอย่างเช่นวางไข่เปลือกที่สองภายในแรก (ฉันใช้$$
เพื่อเป็นตัวแทนของแจ้งในเปลือกด้านใน):
$ FOO=BAR
$ bash
$$ echo $FOO # Note the empty line
$$ exit
$ export FOO
$ bash
$$ echo $FOO
BAR
$$
โปรดทราบว่ามันเป็นตัวแปรที่ส่งออกไม่ใช่แค่ค่าของมัน ซึ่งหมายความว่าเมื่อคุณexport FOO
, FOO
กลายเป็นตัวแปรทั่วโลกและการแสดงขึ้นมาในสภาพแวดล้อมที่ตามมาแม้ว่าการเปลี่ยนแปลงในภายหลัง
$ export FOO
$ FOO=BAR
$ bash
$$ echo $FOO
BAR
$$