ฉันมีไฟล์ bash src-useful.bash
ซึ่งมีฟังก์ชั่นที่มีประโยชน์เช่นsay_hello()
ตั้งอยู่ใน / path / to / มีประโยชน์
ในฉัน~/.bash_profile
ฉันเพิ่มบรรทัดต่อไปนี้:
export BASH_USEFUL=/path/to/useful
source $BASH_USEFUL/src-useful.bash
การเปิดเทอร์มินัลใหม่ฉันสามารถตรวจสอบสิ่งต่อไปนี้:
$ echo $BASH_USEFUL
/path/to/useful
$ cat $BASH_USEFUL/src-useful.bash
function hello() {
echo "hello!"
}
$ hello
hello!
ฉันสร้างสคริปต์say_hello.sh
:
$ cat say_hello.sh
echo "BASH_USEFUL: $BASH_USEFUL"
hello
$ ./say_hello.sh
BASH_USEFUL: /path/to/useful # Recognizsed
say_hello.sh: line 2: say_hello: command not found # Not recognized?
หากฉันแหล่งที่มา$BASH_USEFUL/src-useful.bash
ในsay_hello.sh
มันจะทำงานอย่างไร:
$ cat say_hello.sh
echo "BASH_USEFUL: $BASH_USEFUL"
source $BASH_USEFUL/src-useful
say_hello
$ ./say_hello.sh
BASH_USEFUL: /path/to/useful # Recognized
hello! # Function say_hello is now recognized
ฉันต้องการทราบว่าทำไมBASH_USEFUL
สคริปต์ยังคงรับรู้ถึงตัวแปรในขณะที่สคริปต์ที่ทำงานของฉันไม่สามารถมองเห็นฟังก์ชั่นจากไฟล์ที่มาของฉันในสภาพแวดล้อมได้ มีวิธีแก้ปัญหานอกเหนือจากการหาsrc-useful.bash
สคริปต์ของฉันหรือไม่? ฉันต้องการsrc-useful.bash
โหลดฟังก์ชั่นในสภาพแวดล้อมของสคริปต์ที่ฉันเปิดตัว
hello()
การsay_hello()
ในขั้นตอนข้างต้น ...