คุณต้องการexport
ตัวแปรที่ควร "เห็น" โดยโปรแกรมอื่นที่คุณเปิดใช้ในเชลล์ในขณะที่ตัวแปรที่ใช้ภายในเชลล์เท่านั้นไม่จำเป็นต้องถูกexport
แก้ไข
นี่คือสิ่งที่หน้าคนพูดว่า:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
สิ่งนี้สามารถสาธิตได้ดังต่อไปนี้:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
คำอธิบาย:
- ครั้งแรกที่ผมตั้งให้เป็นตัวแปรเปลือกหอย
${MYVAR}
MYVAR="value"
ใช้echo
ฉันสามารถสะท้อนมูลค่าของมันเพราะ echo เป็นส่วนหนึ่งของเปลือก
echo.sh
แล้วฉันจะสร้าง นั่นเป็นสคริปต์ตัวเล็ก ๆ ที่ทำแบบเดียวกันโดยทั่วไปมันแค่ก้อง${MYVAR}
แต่ความแตกต่างก็คือมันจะทำงานในกระบวนการที่แตกต่างกันเพราะมันเป็นสคริปต์ที่แยกต่างหาก
- เมื่อเรียก
echo.sh
มันจะไม่ส่งผลอะไรเนื่องจากกระบวนการใหม่ไม่ได้รับมรดก${MYVAR}
- จากนั้นฉันก็ส่งออก
${MYVAR}
ไปยังสภาพแวดล้อมด้วยexport
คำหลัก
- เมื่อตอนนี้ฉันทำงานเหมือนเดิม
echo.sh
อีกครั้งมันก็สะท้อนเนื้อหาของ${MYVAR}
เพราะมันได้รับมาจากสภาพแวดล้อม
ดังนั้นเพื่อตอบคำถามของคุณ:
ขึ้นอยู่กับตัวแปรที่จะใช้ไม่ว่าคุณจะต้องส่งออกหรือไม่