ฉันได้เขียนสคริปต์ต่อไปนี้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างเมื่อจำเป็น
#!/bin/sh
export BASE=/home/develop/trees
echo $BASE
export PATH=$PATH:$BASE
echo $PATH
ด้านล่างคำสั่งและผลลัพธ์ที่ฉันเห็นบนเทอร์มินัลของฉัน: สคริปต์ทำงาน แต่ตัวแปรไม่ได้ถูกตั้งค่าในตอนท้าย
~$: ./script.sh
/home/develop/trees
/bin:......:/home/develop/trees
~$: echo $BASE
~$:
เกิดอะไรขึ้น ขอบคุณล่วงหน้า. มีร์โก
export
ผ่านตัวแปรไปยัง subshell, subshell เป็นสำเนาของเชลล์ปัจจุบันของคุณรวมถึงตัวแปรและฟังก์ชั่นอื่น ๆ ตัวแปรที่ส่งออกจะถูกคัดลอกไปยังกระบวนการใหม่ที่เกิดจากเชลล์โดยไม่คำนึงว่ากระบวนการนั้นเป็นเชลล์อื่นหรือไม่ ประการที่สอง.
คือคำสั่ง POSIX สำหรับการจัดหา Bash เพิ่มsource
เป็นคำพ้องความหมายที่อ่านได้มากกว่า แต่คุณไม่สามารถเชื่อได้ว่ามันมีอยู่ใน sh สุดท้าย. ./script
แทนที่จะเป็น. script
ถ้าคุณต้องการหลีกเลี่ยงความประหลาดใจ mywiki.wooledge.org/BashFAQ/060