심볼릭 링크가 없는 pwd

심볼릭 링크가 없는 pwd

이렇게 하면 pwd현재 디렉터리에 들어가기 위해 사용하는 모든 심볼릭 링크를 사용한다는 것을 알 수 있습니다. 내가 있는 "실제" 디렉터리, 즉 심볼릭 링크를 사용하지 않고 루트에서 현재 디렉터리까지의 경로를 알려주도록 할 수 있습니까?

답변1

POSIX 매뉴얼 페이지에 따르면 pwd-P옵션이 유용할 수 있습니다:

-P 작성된 절대 경로 이름에는 경로 이름 컨텍스트에서 기호 링크 유형 파일을 참조하는 파일 이름이 포함되어서는 안됩니다.

그러므로

$ pwd -P

그것은 당신에게 필요한 것이어야합니다.

답변2

내장된 pwd 쉘은 사용할 때 쉘이 추적 cd하고 저장하는 경로를 사용합니다 $PWD. 이는 복잡한(깊은) 경로를 가리키는 심볼릭 링크가 있는 경우 실제 경로 대신 해당 디렉터리로 변경하기 위해 입력한 내용을 알려준다는 의미입니다. 이는 대부분의 경우 원하는 것을 제공하기 위해 수행됩니다.

/bin/pwdgetcwd시스템 호출(지금은 라이브러리 호출, 읽기 )을 사용하여 /proc/self/cwd모든 기호 링크 탐색 없이 현재 디렉토리에 대한 정식 경로를 반환합니다.

Steven D가 지적했듯이 무시하도록 선택할 pwd수 있습니다 . 또한 반환되는 항목을 선택할 수도 있습니다 . 매뉴얼 페이지에는 기본적으로 어떤 옵션이 사용되는지 나와 있지 않지만, 경험상 위의 설명이 정확하다는 것을 알 수 있습니다( 쉘 대 쉘). 그러나 이에 의존하지 말고 그냥 사용하면 됩니다 .-P$PWD-L$PWDpwdpwd/bin/pwdpwd -P

관련 정보