#!/bin/bashA=Becho "PID for 1.sh before exec/source/fork:$$"export Aecho "1.sh: /$A is $A"case $1 in exec) echo "using exec..." exec ./2.sh ;; source) echo "using source..." . ./2.sh ;; *) echo "using fork by default..." ./2.sh ;;esacecho "PID for 1.sh after exec/source/fork:$$"echo "1.sh: /$A is $A"
2.sh
#!/bin/bashecho "PID for 2.sh: $$"echo "2.sh get /$A=$A from 1.sh"A=Cexport Asleep 1echo "2.sh: /$A is $A"
试验开始
./1.sh fork
PID for 1.sh before exec/source/fork:259501.sh: $A is Busing fork by default...PID for 2.sh: 259512.sh get $A=B from 1.sh2.sh: $A is CPID for 1.sh after exec/source/fork:259501.sh: $A is B
./1.sh source
PID for 1.sh before exec/source/fork:259651.sh: $A is Busing source...PID for 2.sh: 259652.sh get $A=B from 1.sh2.sh: $A is CPID for 1.sh after exec/source/fork:259651.sh: $A is C
./1.sh exec
PID for 1.sh before exec/source/fork:259791.sh: $A is Busing exec...PID for 2.sh: 259792.sh get $A=B from 1.sh2.sh: $A is C