如何根据PATH环境变量找到可执行文件的绝对路径(例如,基于/bin/sh
的环境变量)?
换句话说,是否有一个功能,例如program_path "cal"
返回"/usr/bin/cal"
?
提出这个问题的原因是:OCaml库中的一些函数(例如Unix.execvp
)只能获取程序的名称(函数将自己搜索程序)。我想知道这个搜索功能是否可供用户使用。
答案 0 :(得分:3)
您可以使用fileutils库来实现符合POSIX标准的文件实用程序,包括which
实用程序,您正在寻找的实用程序。 E.g。
# #use "topfind";;
# #require "fileutils";;
# FileUtil.which "cal";;
- : FilePath.filename = "/usr/bin/cal"