メインコンテンツにスキップ

pathexpand 関数

pathexpand は、~ セグメントで始まる可能性のあるファイルシステムパスを受け取り、もしそうであれば、そのセグメントを現在のユーザーのホームディレクトリパスに置き換えます。

この関数はパス文字列のみを操作し、ファイルシステム自体にはアクセスしません。そのため、シンボリックリンクなどのファイルシステム機能を考慮することはできません。

パスの先頭セグメントが ~ でない場合、指定されたパスは変更されずに返されます。

リソース引数でこの関数を使用すると、異なるホームディレクトリパスを持つ複数のユーザーによって同じ構成が実行された場合、または異なるホストオペレーティングシステムで使用された場合に、誤った差分が発生します。 この関数は、SSH キーなどを探すための `connection` や `provisioner` ブロックなど、一時的な値にのみ使用することをお勧めします。

現在のユーザーの「ホームディレクトリ」を決定するためのルールは、ホストオペレーティングシステムによって異なります。

**Unix システムの場合**、次のソースが優先順位の高い順に参照されます。

  • HOME 環境変数。
  • getent passwd を実行し、その後に OpenTofu プロセス UID を実行した結果。
  • shcd && pwd を実行した結果。

**Windows システムの場合**、Unix と同じ意味でのホームディレクトリの概念は実際にはありませんが、次のソースが優先順位の高い順に参照されます。

  • HOME 環境変数。
  • HOMEDRIVEHOMEPATH 環境変数が両方とも設定されている場合、これらの変数。
  • USERPROFILE 環境変数。

各オペレーティングシステムに採用されている正確なルールは、OpenTofu の将来のリリースで変更される可能性があります。

コードブロック
> pathexpand("~/.ssh/id_rsa")
/home/steve/.ssh/id_rsa
> pathexpand("/etc/resolv.conf")
/etc/resolv.conf