pathexpand 함수

pathexpand 함수

pathexpand 함수는 파일시스템 경로가 ~ 세그먼트로 시작하면, 그 세그먼트를 현재 사용자의 홈 디렉터리 경로로 바꿔주는 내장 함수예요.

출처: 문서

본문

pathexpand~ 세그먼트로 시작할 수 있는 파일시스템 경로를 받아서, 그 세그먼트를 현재 사용자의 홈 디렉터리 경로로 치환해요. 이 함수는 경로 문자열만 다루며 파일시스템 자체에는 접근하지 않아요. 그래서 심볼릭 링크(symlink) 같은 파일시스템 기능을 고려할 수는 없어요.

경로의 첫 세그먼트가 ~가 아니라면 주어진 경로를 그대로 반환해요.

이 함수를 리소스 인자에서 사용하면, 홈 디렉터리 경로가 다른 여러 사용자가 같은 설정을 실행하거나 다른 호스트 운영체제에서 실행할 때 불필요한 diff가 생길 수 있어요. 주로 connection이나 provisioner 블록에서 SSH 키 위치를 찾을 때처럼 일시적인 값에만 사용하는 걸 권장해요.

현재 사용자의 "홈 디렉터리"를 결정하는 규칙은 호스트 운영체제에 따라 달라요.

Unix 시스템에서는 다음 소스를 우선순위 순서대로 참고해요:

  • HOME 환경 변수.
  • getent passwd 뒤에 Terraform 프로세스의 uid를 붙여 실행한 결과.
  • sh에서 cd && pwd를 실행한 결과.

Windows 시스템에는 Unix와 같은 의미의 홈 디렉터리 개념이 딱히 없지만, 다음 소스를 우선순위 순서대로 참고해요:

  • HOME 환경 변수.
  • HOMEDRIVEHOMEPATH 환경 변수 (둘 다 설정된 경우).
  • USERPROFILE 환경 변수.

각 운영체제에서 적용되는 정확한 규칙은 향후 Terraform 릴리스에서 바뀔 수 있어요.

예시

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

더 알아보기 (Learn more)