导出另一个文件中定义的variables

我有一个包含一些需要设置为环境variables的variables的脚本

variables列表不断变化,并在我的末尾修改它不是一个选项。 任何想法我会怎么去做呢?

示例文件foo.sh

FOO="FOOFOO" BAR="BARBAR" 

Solutions Collecting From Web of "导出另一个文件中定义的variables"

变量和环境变量是有区别的。 如果你执行. foo.sh . foo.shfoo.sh包含行FOO=value ,那么将在当前进程中分配变量FOO 。 这不是一个环境变量。 要成为一个环境变量(因此可以被子shell使用),它必须被导出。 但是,shell提供了一个选项,使得所有的变量赋值都将变量提升为一个环境变量,所以如果你只是简单地做:

 set -a . foo.sh set +a 

那么foo.sh中的所有变量赋值都将成为当前进程中的环境变量。 请注意,这不是严格意义上的:在bash中,导出变量使其成为当前shell中的环境变量,但在其他shell(例如破折号)中,导出该变量并不会使其成为当前shell中的环境变量。 (但它确实使它被设置在子壳的环境中。)

你在找'。'吗? 命令(在bash也拼写为“source”):

 source foo.sh 

由于您需要将它们导出到环境中,因此您可能需要做一些额外的工作:

 while read -r line; do export "$line" done < foo.sh 

如果您只想输出带有通用前缀的变量,例如:

 BAZ_FOO="FOOFOO" BAZ_BAR="BARBAR" 

你可以简单地这样做:

 . foo.sh variable_list=() variable_list=( $(set -o posix ; set |\ grep "BAZ_" |\ cut -d= -f1) ) for variable in "${variable_list[@]}" do export "$variable" done