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

Dis*_*ame 6 bash environment-variables

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

foo=bar
bar=foo
Run Code Online (Sandbox Code Playgroud)

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

export foo=bar
export bar=foo
Run Code Online (Sandbox Code Playgroud)

可以做某种source+export还是我必须更改variables.sh以便export在设置每个变量之前都有?

Áng*_*gel 10

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

你可以获取第二个文件,或者让它 source variables.sh。有多种方法可以做你想做的事情,比如对处理文件的结果做一个 eval,但最干净的方法是使用set -abash shell:

          -a      Automatically  mark  variables  and  functions which are
                  modified or created for export  to  the  environment  of
                  subsequent commands.
Run Code Online (Sandbox Code Playgroud)

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

          -a      Automatically  mark  variables  and  functions which are
                  modified or created for export  to  the  environment  of
                  subsequent commands.
Run Code Online (Sandbox Code Playgroud)

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

  • 您可能希望在获取文件后`set +a`,以导出*一切。* (2认同)