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