如何在脚本完成运行后保留从shell脚本设置的环境变量?
答案 0 :(得分:11)
运行脚本无法做到这一点。该脚本产生了它自己的子shell,当脚本完成时它会丢失。
为了保留脚本中可能包含的export
,您可以像这样调用它们,这会将它们添加到当前环境中:
. myScript.sh
注意.
和myScript.sh
部分之间的空格。
答案 1 :(得分:2)
按如下方式运行脚本:
source <script>
-OR-
. <script>
这将在当前shell中运行脚本,并在当前shell中定义变量。在脚本完成后,变量将保留在当前shell中。
答案 2 :(得分:1)
环境变量存在于每个进程专用的环境中。 shell将导出变量的COPY传递给它的子项作为它们的环境,但是它们没有办法将它们的环境传递回父项或除子项之外的任何进程。
您可以打印这些变量并将其加载到父级中。
或者如前所述,您可以使用“source script”或“。script”在当前shell中运行脚本(如果。不存在,则可能需要./script。)。
有些工具打印他们的变量,shell可以使用ssh-agent
之类的反引号加载它们。这样,无论什么ssh-agent打印都将作为命令运行。如果它打印出类似“VAR1 = VAL; VAR2 = VAL2”的东西,它可以做你想要的。