在 中ant,如何PATH在不破坏内容的情况下添加内容/usr/bin?我直接从 Apache ant 文档开始工作以应用到PATH https://ant.apache.org/manual/Tasks/exec.html(示例部分)。参考的文档searchpath描述如下:searchpath: 当此属性为 时true,解析可执行文件的位置时将搜索系统路径环境变量。从 Ant 1.6.3 开始...但searchpath似乎也无助于解决这个特定问题。举个例子build.xml:<project name="Sample" default="init" basedir="."> <description>Testing PATH with exec</description> <target name="init"> <exec executable="./test.sh"> <env key="PATH" value="${env.PATH}:/foo"/> </exec> </target></project>以及以下 shell 脚本test.sh:#!/bin/bashecho "Hello!" # This worksuname # If PATH is edited, shows "uname: command not found"输出:init: [exec] Hello! [exec] ./test.sh: line 3: uname: command not found [exec] Result: 127...但是,如果我注释掉它,<env key="PATH" value="${env.PATH}:/foo"/>它就可以正常工作。你如何添加PATH而不破坏东西?我正在 MacOS 10.14.5“Mojave”上使用 AdoptOpenJDK 11.0.3 和 Apache Ant 1.10.6 进行测试。
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
找到了。Apache Ant 文档假定您在代码中的某处调用了以下内容:
<property environment="env"/>
没有这个,PATH将被设置为文字 string ${env.PATH},从而破坏该PATH值。$PATH这可以通过回显shell 脚本中的值来观察。
他们的文档在示例中有这个,但在上面的示例中遗漏了它,导致了这个问题。
<project name="Sample" default="init" basedir=".">
<description>Testing PATH with exec</description>
<target name="init">
<property environment="env"/><!-- THIS WAS MISSING -->
<exec executable="./test.sh">
<env key="PATH" value="${env.PATH}:/foo"/>
</exec>
</target>
</project>
添加回答
举报
0/150
提交
取消