我在这里遗漏了一些东西。 我们有一个脚本来设置几个环境变量:
firstscript.sh:
#!/bin/sh
export JAVA_HOME=/novus/jdk/jdk1.7.0_67
echo "exported"
这些变量对其他脚本很重要:
#!/bin/sh
echo $JAVA_HOME
我正在做的工作是从shell获取第一个脚本并调用第二个脚本。我试图将两个脚本合二为一。 我认为第二个脚本应该是这样的:
#!/bin/sh
eval firstscript.sh
echo $JAVA_HOME
我已经尝试使用eval,我已经尝试过这个来源,我已经尝试了这个没有eval或source,无论我做什么,在第一个脚本中导出的变量都不是&# 39; t在秒表中找到。
我还尝试过没有firstscript导出,只是在shell中设置变量。那也没有用。像这样:
#!/bin/sh
JAVA_HOME=/novus/jdk/jdk1.7.0_67
echo "exported"
答案 0 :(得分:0)
它应该与export
和source
一起使用。这是一个测试运行,以防你可能遗漏了一些东西:
$ echo 'export var1=defined' > sourced_script.sh
$ echo 'source ./sourced_script.sh; echo $var1' > main_script.sh
$ chmod +x main_script.sh
$ ./main_script.sh
defined
至少有两个要点:
export
,否则在定义它们的上下文之外不可用source
必须在将使用变量的同一个shell中执行。对于第二点,例如,如果您要执行以下命令:
(source first_script.sh; echo $JAVA_HOME) ; echo $JAVA_HOME
只有第一个echo会打印first_script.sh
中定义的变量,因为导出只会影响它运行的子shell。