我想从ant脚本导出变量,但是我做错了导致我收到错误:
sh:0:无法打开导出DISPLAY =:10
我的剧本片段
<target name="xvfb_start">
<echo>Starting xvfb</echo>
<exec executable="sh">
<arg value="export DISPLAY=:10"/>
</exec>
</target>
答案 0 :(得分:1)
这不起作用,因为sh
期望第一个参数是要执行的命令。 export DISPLAY=:10
没有有效的命令(因为你将它作为单个参数传递给sh
,它会将所有内容都作为脚本名称的一部分来启动,即使是空格和冒号)。
要使sh
评估参数,请尝试sh -c
。这将为您提供一个定义了变量DISPLAY
的shell。由于命令行上没有其他命令,shell将终止并且您的变量将随之丢失。
解决方案:
对于#1:
<exec executable="sh">
<arg value="-c"/>
<arg value="export DISPLAY=:10 ; xvfb"/>
</exec>
对于#2,将所有命令放入普通的shell脚本中并执行sh
。
答案 1 :(得分:1)
我发现有用的方法是在与运行ant相同的命令中导出变量。
例如(来自你的shell):
export DISPLAY=:10 ; ant your-target-name
在~/.bashrc
(如果有的话)中导出的任何变量都可用于ant运行的进程。我的项目中有export DISPLAY
。 (如果您正在对此进行测试,请不要忘记致电reset
让终端接听.bashrc
的更改。