Command line 用于设置环境变量的Phing exec命令

Command line 用于设置环境变量的Phing exec命令,command-line,environment-variables,exec,phing,Command Line,Environment Variables,Exec,Phing,我正在尝试使用phing在构建脚本中设置一个环境变量。 这通常在命令行中完成,如下所示: export MY_VAR=value 在Phing,我做了以下操作,但不起作用 <exec command="export MY_VAR=value" /> 我以前从未听说过phing,但它看起来很有希望成为一个构建工具。谢谢你的发帖!我查看了phing.info上的文档,发现了以下可能性: #我想澄清一点。你是这么说的吗 prompt$ > export MY_VAR=value

我正在尝试使用phing在构建脚本中设置一个环境变量。 这通常在命令行中完成,如下所示:

export MY_VAR=value
在Phing,我做了以下操作,但不起作用

<exec command="export MY_VAR=value" />

我以前从未听说过phing,但它看起来很有希望成为一个构建工具。谢谢你的发帖!我查看了phing.info上的文档,发现了以下可能性:

#我想澄清一点。你是这么说的吗

prompt$ > export MY_VAR=value
prompt$ > phing build.xml
没有将MY_VAR设置为值,以便在运行的phing进程中可见?我会感到惊讶,但如果这不是您希望运行构建脚本的方式,我会理解

#1我认为在构建工具的上下文中,像exec这样的功能意味着运行一个独立的程序,因此,虽然exec可以运行并设置MY_VAR,但这一切都发生在一个子流程中,当exec完成并继续处理build.xml中的下一个任务时,该子流程立即消失

如果您只是想确保phing脚本使用特定的env_vars值运行,那么您可以尝试

Command-line arguments:
....
-D<property>=<value>    
  // Set the property to the specified value to be used in the buildfile
<P>2是否考虑使用属性文件? 看见 并向下滚动查看build.properties上的信息

#3另外

Phing Built-In Properties
Property    Contents
    env.*   Environment variables, extracted from $_SERVER.
您可以通过以下方式访问它们

 ${env.MY_VAR}
#4这看起来更接近你真正想要的



我希望这会有所帮助。

粗体声明:无法在PHP中设置/导出(Unix)shell变量,以便在启动PHP脚本的作用域内可见该变量

我什么也不回。 因为PHP做不到,所以phing也做不到

跨多个脚本运行访问shell环境变量(如果您需要的话)似乎也是一个统一的设计决策,非常有状态


除此之外,我建议你坚持使用phing,并从中吸取教训。Phing在某种程度上帮助了无状态思维。

我认为这是一个相当古老的问题,但我认为它没有得到最好的回答。如果您希望导出shell变量,例如,假设您正在从phing运行phpunit,并且希望在调用phpunit之前进行导出,请尝试:

<exec command="export MY_VAR=value ; /path/to/phpunit" />

这正是我的用例,也是正确的答案。您是一位学者和绅士。具有
导出功能
不可移植,但适用于单个平台
<replacetokens>
  <token key="BC_PATH" value="${top.builddir}/"/>
  <token key="BC_PATH_USER" value="${top.builddir}/testsite/user/${lang}/"/>
</replacetokens>
php myfile.php (does putenv or shell_exec('export foo=bar');)
echo $foo
<exec command="export MY_VAR=value ; /path/to/phpunit" />
$myVar = getenv('MY_VAR');