我有一个包含几个需要被设置成一个环境变量,变量的脚本
变量列表中不断调整,修改它在我到底是不是一种选择。 任何想法,我怎么会去这样做呢?
示例文件foo.sh
FOO="FOOFOO"
BAR="BARBAR"
我有一个包含几个需要被设置成一个环境变量,变量的脚本
变量列表中不断调整,修改它在我到底是不是一种选择。 任何想法,我怎么会去这样做呢?
示例文件foo.sh
FOO="FOOFOO"
BAR="BARBAR"
有一个变量,环境变量之间的差异。 如果执行. foo.sh
. foo.sh
和foo.sh
包含行FOO=value
,则变量FOO
将在当前过程来分配。 它不是一个环境变量。 成为环境变量(和因而提供给子壳),它必须被导出。 然而,炮弹提供这使得所有的变量赋值推动变量的环境变量的选项,所以,如果你只是这样做:
set -a
. foo.sh
set +a
然后在foo.sh所有变量赋值将在目前的工艺制造的环境变量。 请注意,这并不完全正确:在bash,出口变量使得它在当前shell的environement变量,但在其他壳(破折号,例如)导出变量不让它在当前shell的环境变量。 (它不会导致它在子shell环境然而,可以设置它。)然而,在外壳的背景下,它并不重要,如果一个变量是在当前进程的环境变量。 如果出口(并且因此在任何的子过程的环境中设置),一个变量,它是不是在环境是功能等效的环境变量。
您是否正在寻找的“” 命令(也拼写“源” bash
):
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