在不破坏东西的情况下将项目添加到蚂蚁的路径
Add items to ant's PATH without breaking stuff
在 ant
中,如何添加到 PATH
而不破坏 /usr/bin
中的内容?我直接从 Apache ant 文档开始工作以应用到 PATH
https://ant.apache.org/manual/Tasks/exec.html(示例部分)。
文档参考searchpath
,描述如下:
searchpath
: When this attribute is true
, then system path environment variables will be searched when resolving the location of the executable. since 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/bash
echo "Hello!" # This works
uname # 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 上使用 AdoptOpenJDK 11.0.3 和 Apache Ant 1.10.6 进行测试 "Mojave"。
找到了。Apache Ant 文档假设您在代码中的某处调用了以下内容:
<property environment="env"/>
如果没有这个,PATH
将被设置为文字字符串 ${env.PATH}
,从而破坏 PATH
值。这可以通过在 shell 脚本中回显 $PATH
的值来观察。
他们的文档在示例中有这个,但在上面的示例中遗漏了导致问题。
<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>
在 ant
中,如何添加到 PATH
而不破坏 /usr/bin
中的内容?我直接从 Apache ant 文档开始工作以应用到 PATH
https://ant.apache.org/manual/Tasks/exec.html(示例部分)。
文档参考searchpath
,描述如下:
searchpath
: When this attribute istrue
, then system path environment variables will be searched when resolving the location of the executable. since 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/bash
echo "Hello!" # This works
uname # 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 上使用 AdoptOpenJDK 11.0.3 和 Apache Ant 1.10.6 进行测试 "Mojave"。
找到了。Apache Ant 文档假设您在代码中的某处调用了以下内容:
<property environment="env"/>
如果没有这个,PATH
将被设置为文字字符串 ${env.PATH}
,从而破坏 PATH
值。这可以通过在 shell 脚本中回显 $PATH
的值来观察。
他们的文档在示例中有这个,但在上面的示例中遗漏了导致问题。
<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>