OSX导出的环境变量未在子进程中继承

时间:2012-04-23 11:18:58

标签: macos bash variables export environment

我在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

1 个答案:

答案 0 :(得分:1)

您确定没有在子进程中运行script-1.sh吗?我在10.6.8和10.7.3中尝试了你的例子,它运行正常。命令source script-1.sh. script-1.sh相同,它在相同的上下文中运行脚本。导出的变量是环境变量,它们始终复制到子进程。

当我从script-1.sh文件中省略export时,我只能再现相同的输出。