【问题标题】:How do I find the path to the home directory for Linux?如何找到 Linux 主目录的路径?
【发布时间】:2021-10-25 12:57:45
【问题描述】:

我需要$HOME 中包含的路径,即主目录的路径。函数home_dir 似乎正是这样做的,但已被弃用。我应该用什么代替它?

文档是这样说的:

自 1.29.0 起已弃用: 这个函数的行为是出乎意料的,可能不是你想要的。考虑改用 crates.io 的 crate。

我应该改用什么类型的箱子?标准 Rust 真的没有替代品吗?

【问题讨论】:

标签: rust


【解决方案1】:

来自home 箱子。

标准库提供的home_dir的定义是不正确的,因为它依赖于$HOME环境变量,在Windows中基本没有意义。这会导致令人惊讶的情况,即根据是否在 Unix 仿真环境下运行,Rust 程序的行为会有所不同。 Cargo 和 rustup 都没有使用标准库定义——而是使用这里的定义。

discussionhome_dir 带回标准库,但目前 home crate 可能是您的最佳选择。它提供了home_dircargo_homerustup_home的规范定义:

match home::home_dir() {
    Some(path) => println!("{}", path.display()),
    None => println!("Impossible to get your home dir!"),
}

【讨论】:

  • 我认为在github.com/brson/home中复制粘贴单词时将文本标记为引用并提及出处/作者是公平的(我不是作者,只是指出来)
【解决方案2】:

来自dirs 箱子。

请注意,crate 提供了许多由操作系统规则定义的标准目录的路径,而不仅仅是主目录:

经验表明,90% 的 $HOME 请求可以更好地由这个 crate 提供的其他功能之一提供。

如果您的要求更复杂,例如。 G。计算特定应用程序或项目的缓存、配置等路径,请考虑改用directories crate。

【讨论】:

    猜你喜欢
    • 2016-04-27
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2010-10-04
    • 2013-05-12
    • 1970-01-01
    • 2015-08-29
    • 2012-05-03
    相关资源
    最近更新 更多