Bash 重新导出变量

Bash 重新导出变量,bash,Bash,我的脚本是RO,我不能修改它。它设置并导出一些变量 这个脚本并不完美,所以我在上面写了一个包装器。但我有个问题。如何重新导出通过原始脚本导出的变量 在bash中,我可以这样做: . original_script 我可以访问导出的变量。 但当我在脚本中执行此操作时,我无法访问脚本外部导出的变量(因为它们是从subshell导出的) 如何以简单的方式从原始脚本重新导出变量? 一些变量包含空格和新行。您必须一直(又称源代码)。您必须为包装程序编写源代码,包装程序必须为原始脚本编写源代码: 下面是一

我的脚本是RO,我不能修改它。它设置并导出一些变量

这个脚本并不完美,所以我在上面写了一个包装器。但我有个问题。如何重新导出通过原始脚本导出的变量

在bash中,我可以这样做:

. original_script
我可以访问导出的变量。 但当我在脚本中执行此操作时,我无法访问脚本外部导出的变量(因为它们是从subshell导出的)

如何以简单的方式从原始脚本重新导出变量?
一些变量包含空格和新行。

您必须一直
(又称
源代码
)。您必须为包装程序编写源代码,包装程序必须为原始脚本编写源代码:

下面是一个测试用例,展示了这一点:

$ cat original 
echo "Running original"
export VAR='hello world'

$ cat wrapper 
echo "Running wrapper"
. original
当由interactive shell提供源代码时,该变量可用且仍然导出:

$ echo "$VAR"
(no output)

$ . wrapper
Running wrapper
Running original

$ echo "$VAR"
hello world
“原件”:

和包装:

$ cat wrapper.sh
#!/bin/bash
. original.sh
结果:

$ echo "$VAR1 $VAR2"

$ . original.sh
$ echo "$VAR1 $VAR2"
value1 value 2

unset VAR1 VAR2

$ ./wrapper.sh
$ echo "$VAR1 $VAR2"

$ . ./wrapper.sh
$ echo "$VAR1 $VAR2"
value1 value 2
我总是按./script运行脚本,从不按。(或源代码)(仅适用于配置文件:例如~/.bash_profile等)。但我可以通过正常方式调用脚本来重新导出变量吗?(./script)

我添加了别名:

alias wrapper='. wrapper.sh'

我不知道更好的解决方案。

如果导出变量,再次导出它是没有用的。您的问题是什么?
alias wrapper='. wrapper.sh'