在 中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
提交
取消