我在Snow Leopard上遇到了一个非常奇怪的问题。在我的终端中,我写了两个脚本:
首先:
#script-1.sh
export MY_VAR="This is my variable"
第二个脚本:
# script-2.sh, having +x permission
#!/bin/bash
echo $MY_VAR
在终端中,如果我获取脚本-1,然后将脚本2作为子进程调用,则不会显示任何输出:
$> source script-1.sh
$> echo $MY_VAR
This is my variable
$> . script-2.sh
This is my variable
$> ./script-2.sh
$>
知道这里有什么问题吗?我在Windows上使用Cygwin尝试了相同的场景,并且它按预期工作 - 在OSX上,看起来,子进程根本不知道$MY_VAR
。
答案 0 :(得分:1)
您确定没有在子进程中运行script-1.sh
吗?我在10.6.8和10.7.3中尝试了你的例子,它运行正常。命令source script-1.sh
与. script-1.sh
相同,它在相同的上下文中运行脚本。导出的变量是环境变量,它们始终复制到子进程。
当我从script-1.sh文件中省略export
时,我只能再现相同的输出。