我在雪豹上遇到了非常奇怪的问题。在我的终端中,我写了两个脚本:
首先:
#script-1.sh
export MY_VAR="This is my variable"第二个脚本:
# script-2.sh, having +x permission
#!/bin/bash
echo $MY_VAR在终端中,如果我将script-1作为源,然后调用script-2作为子进程,则不会显示任何输出:
$> source script-1.sh
$> echo $MY_VAR
This is my variable
$> . script-2.sh
This is my variable
$> ./script-2.sh
$>你知道这里出了什么问题吗?我使用Cygwin在Windows上尝试了同样的场景,在那里它像预期的那样工作-在OSX上,看起来,子进程根本不知道$MY_VAR。
发布于 2012-04-23 20:23:56
您确定没有在子进程中运行script-1.sh吗?我在10.6.8和10.7.3中尝试了你的例子,它工作正常。命令source script-1.sh与. script-1.sh相同,它在相同的上下文中运行脚本。导出的变量是环境变量,它们总是复制到子进程中。
当我在script-1.sh文件中省略了export时,我能够重现与您相同的输出的唯一情况是。
https://stackoverflow.com/questions/10279519
复制相似问题