为什么这个可以工作:
# a.sh
setEnv() {
export TEST_A='Set'
}
当这个不起作用时:
# b.sh
export TEST_B='Set'
示例:
> source a.sh
> setEnv
> env | grep TEST_A
TEST_A=Set
> b.sh
> env | grep TEST_B
我明白为什么运行脚本不起作用以及如何使其起作用(例如source b.sh
等),但我很好奇函数为什么有效。
如果有影响,这是在OS X上。
source
命令导入其他脚本。 - karakfasource b.sh
然后运行env | grep TEST_B
就可以了。如果没有运行a.sh
,您将没有可用的函数来运行。这与子shell有关(运行b.sh
会创建一个新的shell,并设置其环境),而不是使用source
(使用source
不会创建新的shell)。 - Jonathan Leffler