Answers:
export将变量分配导出到export运行命令的shell的子进程中。您的命令行环境是脚本外壳程序的父级,因此它看不到变量分配。
您可以使用.(或source)bash命令在当前Shell环境中执行脚本命令并实现所需的功能,例如
source ./script.sh
echo "$BASE"
会产生
/home/develop/trees
该source命令在脚本中经常出现,是的bash同义词.,它是POSIX标准的一部分(.例如,破折号可用,但source不是)。
. ./script.sh # identical to "source ./script.sh"
(. script.sh和source script.sh将首先查找script.sh的PATH,所以它的安全指定路径script.sh。)
export将变量传递给子Shell,子Shell是当前Shell的副本,包括变量和函数等。导出的变量将复制到从Shell产生的新进程中,而不管该进程是否是另一个Shell。其次,.是用于采购的POSIX命令。Bashsource为其添加了更易读的同义词,但是您不能依靠它在sh中可用。最后,. ./script而不是. script如果您想避免意外。mywiki.wooledge.org/BashFAQ/060