Ant执行shell脚本时,会丢失环境变量。

3

我正在尝试在Ant中执行一个shell脚本,代码如下:

<exec executable="bash" newenvironment="false" dir="./">
  <arg value="script.sh">
</exec>
但是,当它执行脚本时,所有对环境变量的引用,如$MY_VARIABLE,都返回为空字符串。我该怎么办?根据http://ant.apache.org/manual/Tasks/exec.html,我认为应该传播环境。(我也意识到newenvironment默认为false。) 编辑:我看到了env元素,但我没有看到一种以整体方式传递环境的方法。有什么办法可以做到这一点吗?

我的变量定义在哪里? - mmmmmm
作为一个环境变量...问题是如何让子进程看到环境,即当在 Runtime.exec 调用时,它并没有传递环境。逐个传递每个项目是不可行的,因为我正在尝试编写一些简单且可扩展的东西。 - PHeath
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
4

您是否已导出变量?除非您导出它,否则子进程将无法看到该变量:

$ cat a.xml
<project>
  <exec executable="bash" newenvironment="false" dir=".">
    <arg value="script.sh"/>
  </exec>
</project>
$ cat script.sh
#!/bin/sh
env
$ MY_VARIABLE=defined
$ ant -f a.xml | grep MY_VARIABLE
$ export MY_VARIABLE
$ ant -f a.xml | grep MY_VARIABLE
     [exec] MY_VARIABLE=defined

0

这将执行一个新的bash shell(使用为您的活动用户定义的任何配置和新环境),然后bash shell获取参数并执行。

可以尝试以下方法在当前shell环境中执行

<exec executable="script.sh" newenvironment="false" dir="./">
</exec>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,