LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 924|回复: 2

关于 wildcard 的一个问题

[复制链接]
发表于 2007-7-15 16:48:02 | 显示全部楼层 |阅读模式
在 GNU make中文版 的第八章中有一个示例:

*****
pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
LS := $(call pathsearch,ls)

变量“LS”的结果为“/bin/ls”。执行过程:函数“subst”将环境变量“PATH”转换为空格分割的搜索路径列表;“addsuffix”构造出可能的可执行程序“$(1)”(这里是“ls”)带路径的完整文件名(如:“/bin/$(1)”),之后使用函数“wildcard”匹配,最后“firstword”函数取第一个文件名。
*****

其中wildcard函数的用法是:
    $(wildcard PATTERN)
    函数功能:列出当前目录下所有符合模式“PATTERN”格式的文件名

我的问题是wildcard仅是在 当前目录 下搜索,这就可能会出现函数返回空,而不是示例中的/bin/ls(即在当前目录下没有相匹配的 /bin/ls,导致 $(wildcard ...)返回空,从而 LS 也为空。)。   
    那如何才能保证LS的结果为 /bin/ls 呢?

    希望我对问题的描述足够的清晰^^
发表于 2007-7-17 07:14:47 | 显示全部楼层
/bin/ls为绝对路径,所以不论当前目录是什么,/bin/ls总能找到,LS的结果也就始终是/bin/ls。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-17 14:21:42 | 显示全部楼层
wildcard 是首先在当前目录下搜索,然后在 $(PATH) 下搜索。 我开始以为仅搜索当前目录。

谢谢了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表