2

我在雪豹上遇到了非常奇怪的问题。在我的终端中,我编写了两个脚本:

第一的:

#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

4

1 回答 1

1

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

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

于 2012-04-23T12:23:56.097 回答