跳至主要内容

pathexpand 函数

pathexpand 接收一个可能以 ~ 段开始的文件系统路径,如果确实如此,则用当前用户的 home 目录路径替换该段。

此函数仅处理路径字符串,不访问文件系统本身。因此,它无法考虑符号链接等文件系统功能。

如果路径中的前导段不是 ~,则返回给定的路径,不做修改。

如果在资源参数中使用此函数,如果同一配置由多个具有不同 home 目录路径的用户运行,或在不同的主机操作系统上使用,则会导致虚假的差异。我们建议仅对临时值使用此函数,例如在 connectionprovisioner 块中查找 SSH 密钥等。

确定当前用户“home 目录”的规则因主机操作系统而异。

**对于 Unix 系统**,以下来源按优先级顺序进行查询

  • HOME 环境变量。
  • 运行 getent passwd 后跟 OpenTofu 进程 uid 的结果。
  • sh 中运行 cd && pwd 的结果。

**对于 Windows 系统**,与 Unix 上的 home 目录概念并不完全相同,但以下来源按优先级顺序进行查询

  • HOME 环境变量。
  • 如果 HOMEDRIVEHOMEPATH 环境变量都已设置,则使用它们。
  • USERPROFILE 环境变量。

每个操作系统的具体规则可能会在将来的 OpenTofu 版本中发生变化。

示例

代码块
> pathexpand("~/.ssh/id_rsa")
/home/steve/.ssh/id_rsa
> pathexpand("/etc/resolv.conf")
/etc/resolv.conf