是否可以导出从源文件获得的所有变量?

是否可以导出从源文件获得的所有变量?

假设我有一个名为 的文件variables.sh,它设置两个变量。

foo=bar
bar=foo

如果我source这个文件,我可以在当前 shell 中使用这些变量,但如果我想在第二个 shell 脚本中使用它,我将不得不导出它们,因此文件必须如下所示:

export foo=bar
export bar=foo

可以做某种source+export或者我是否必须进行更改,以便在设置每个变量之前variables.sh有 + ?export

答案1

如果我想在第二个 shell 脚本中使用它,我必须导出它们,因此文件必须如下所示:

您可以获取第二个文件,或者将其获取variables.sh.有多种方法可以完成您的任务,例如对处理文件的结果进行评估,但最干净的方法是使用set -abash shell:

          -a      Automatically  mark  variables  and  functions which are
                  modified or created for export  to  the  environment  of
                  subsequent commands.

因此,您可以通过以下方式实现您的目标:

set -a
source variables.sh

正如所指出的l0b0,您可能希望set +a之后这样做,这样您就不会继续在后续 shell 代码中自动导出变量。

相关内容