在另一个 shell 脚本中“内联”调用 shell 脚本

在另一个 shell 脚本中“内联”调用 shell 脚本

因此,这里的重点是,我试图让一个常用脚本工作来设置环境变量(我们称之为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" 

那就行了。

相关内容