谁能解释一下为什么如下:
export PATH:=$(PATH):~/bin2
B:=$(shell PATH=$(PATH) testXq.sh)
$(warning $(B))
工作正常,显示 ~/bin2/testXq.sh 的运行结果,同时执行以下操作:
export PATH:=$(PATH):~/bin2
B:=$(shell testXq.sh)
$(warning $(B))
返回错误:
make: testXq.sh: Command not found
我使用的是 gmake v4.0
答案1
答案2
扩展波浪号字符的可能性极小gmake
,因此波浪号保留在 PATH 中。
然而,当 PATH 字符串再次传递到 shell 时,shell 随后会扩展波形符。
除了gmake
不扩展波浪号字符之外,还有另一个问题:
gmake
export
似乎仅针对从规则运行的“正常”shell 命令(TAB 插入文本后的 shell 命令)实现该关键字。
这并不是第一次因gmake
非正交实现而导致问题。 Gmake 例如声称可以在 OpenVMS 上运行,但该$(shell cmd)
方法在 OpenVMS 上不起作用。