1 个稳定版本
1.0.0 | 2023 年 10 月 11 日 |
---|
#1539 在 文件系统
17KB
127 行
查找 PATH 中的可执行文件
这是一个 Rust crate,旨在在用户的 PATH 中查找可执行文件。
快速入门
使用此 crate 非常简单。您只需执行 use find_in_path::prelude::*;
或 use find_in_path::FindInPath;
,即可在用户的 PATH 中查找 String
、&str
、PathBuf
和 &Path
。
use find_in_path::prelude::*;
use std::path::PathBuf;
let s: String = "sysctl".to_string();
let s_in_path: Option<PathBuf> = s.find_in_path();
// The resultant path will be os and distribution specific
#[cfg(unix)]
assert_eq!(s_in_path, Some(PathBuf::from("/usr/sbin/sysctl")));
#[cfg(windows)]
assert_eq!(s_in_path, None);
非 Unicode 文件
find_in_path 将通过 OsString 和 &OsStr 方法支持非 Unicode 路径,但这将在未来的版本中实现。
安全性
默认情况下,FindInPath
会将搜索 PATH 中找到的相对目录延迟到末尾,因为这可能会导致运行不希望的执行文件。您可以通过设置 "skip_relative_directories" cargo 功能来阻止 FindInPath 完全检查相对目录。另外,如果找到的文件的路径是相对路径,返回的 PathBuf
将始终是相对的。
其他行为
默认情况下,此 crate 假设您正在查找可执行文件,这意味着它将跳过任何不是可执行文件的内容。
Windows
在 Windows 上,您可以激活非默认的 add_exe_ext
cargo 功能,以便在文件名末尾自动添加 .exe(如果尚未添加)。此功能也不会在文件名以 .dll 结尾时追加 .exe
。
find_in_path = { version = "VERSION_NUMBER", features = ["add_exe_ext"] }
在 Unix 上设置此功能不会产生作用。