상대 경로를 이식 가능하고 안정적으로 절대 경로로 변환하려면 어떻게 해야 합니까?

상대 경로를 이식 가능하고 안정적으로 절대 경로로 변환하려면 어떻게 해야 합니까?

제가 Unix 계열 시스템에서 bash를 실행하고 있다고 가정해 보겠습니다. Linux일 필요도 없고 아주 새로운 시스템일 필요도 없으며 원하는 소프트웨어가 모두 포함되어 있지 않을 수도 있습니다.

이제 상대 경로가 있고 절대 경로를 얻고 싶습니다. 가장 강력하고 이식 가능한 방법은 무엇입니까?

답변여기대부분 GNU 핵심 유틸리티가 설치되어 있다고 가정하는 것 같지만 저는 그렇게 하지 않는 편이 좋습니다.

귀하의 답변이 Bourne Shell 변형에 적용되는 경우 보너스 포인트가 제공됩니다.

답변1

$PWDBourne Shell에 환경 변수가 설정되어 있는지 확실하지 않지만명령은 pwd오래된 minix부터 존재해왔습니다.그리고는POSIX의 일부, 그래서:

abs_path="$(cd "$rel_path" && pwd -P)"

답변2

내가 지금 하고 있는 일은

absolute_path="$(cd "$relative_path"; echo "$PWD")"

Bourne Shell에 $PWD.

답변3

CwdPerl의 핵심 모듈을 사용할 수 있습니다 . 이 모듈은 현재 작업 디렉터리의 경로 이름을 결정하는 기능을 제공합니다.

perl -MCwd -le 'print Cwd::realpath("foo")'

Perl은 일반적으로 Linux 및 Unix에 이미 설치되어 있습니다. 이 모듈은 1994년부터 Perl-5 코어의 일부였습니다.

관련 정보