因此,这里的重点是,我试图让一个常用脚本工作来设置环境变量(我们称之为setenv.sh
),这些变量将在后续脚本中使用。在 Windows 中(我知道,这是一个 4 个字母的单词……)我可以使用批处理文件来设置环境变量后批处理文件已结束。我正在寻找相同的效果。
但是,我刚刚通过浏览互联网了解到,脚本(即 shell)中设置的环境变量只会在子 shell 中保留,而不会影响父 shell。好吧,不管怎样,现在我想知道的是,我是否可以运行脚本排队在另一个脚本中?排队,我说的是类似于 C/C++#include
指令的东西。我想要这个,因为如果我可以调用脚本仿佛它在当前脚本中运行,我的环境变量至少会在我所需脚本的整个运行过程中持续存在。
例如这样的事情:
cat ~/install/setenv.sh | /bin/bash
echo "JBoss home directory is set to $JBOSS_HOME"
但我意识到即使这样也行不通,我正在通过调用来启动一个子 shell /bin/bash
。如果我必须setenv.sh
为每个我希望它与之内联运行的脚本调用这个,那就没问题了。
答案1
如果您想包含环境变量,您可以在文件中设置这些变量,然后source
在脚本中设置该文件。
例如:在 myconfig 中我可以执行以下操作:
#!/bin/bash
EDITOR=emacs
JBOSS_HOME=/path/to/jboss/home
然后在我的 shell 脚本中:
#!/bin/bash
source /path/to/myconfig
echo "JBOSS home dir is $JBOSS_HOME"
那就行了。