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