出口变量在另一个文件中定义(Export variables defined in another

2019-07-20 00:36发布

我有一个包含几个需要被设置成一个环境变量,变量的脚本

变量列表中不断调整,修改它在我到底是不是一种选择。 任何想法,我怎么会去这样做呢?

示例文件foo.sh

FOO="FOOFOO"
BAR="BARBAR"

Answer 1:

有一个变量,环境变量之间的差异。 如果执行. foo.sh . foo.shfoo.sh包含行FOO=value ,则变量FOO将在当前过程来分配。 它不是一个环境变量。 成为环境变量(和因而提供给子壳),它必须被导出。 然而,炮弹提供这使得所有的变量赋值推动变量的环境变量的选项,所以,如果你只是这样做:

set -a
. foo.sh
set +a

然后在foo.sh所有变量赋值将在目前的工艺制造的环境变量。 请注意,这并不完全正确:在bash,出口变量使得它在当前shell的environement变量,但在其他壳(破折号,例如)导出变量不让它在当前shell的环境变量。 (它不会导致它在子shell环境然而,可以设置它。)然而,在外壳的背景下,它并不重要,如果一个变量是在当前进程的环境变量。 如果出口(并且因此在任何的子过程的环境中设置),一个变量,它是不是在环境是功能等效的环境变量。



Answer 2:

您是否正在寻找的“” 命令(也拼写“源” bash ):

source foo.sh

既然你需要将它们导出到环境好,你可能需要做一些额外的工作:

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


Answer 3:

如果您正在寻找变量只有出口具有共同的前缀,例如:

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


文章来源: Export variables defined in another file
标签: linux bash shell