심볼릭 링크 해결 (Pwd)


32

내가 다음을 수행한다고 가정 해보십시오.

cd /some/path
ln -s /target/path symbolic_name

그렇다면 :

cd /some/path
cd symbolic_name
pwd

나는 얻다:

/some/path/symblic_name

그리고 아닙니다 :

/target/path

쉘에서 직접 수행 한 것처럼 심볼릭 링크 (예 : CWD 업데이트 등)를 "완전히 해결"하는 방법이 있습니까?

cd /target/path

?

대상 경로에 도달하는 방법에 대해 "인식"또는 "민감한"것처럼 보이는 일부 프로그램을 실행해야하며 마치 마치 cd /target/path직접 수행 한 것처럼 대상 경로에 도달했다고 생각하고 싶습니다 .


7
이 질문과 관련 있습니다. 당신은 할 수 pwd -P또는 alias pwd='pwd -P'cd -P대신 심볼릭 링크의 실제 경로로 이동합니다.
Martín Canaval

@ MartínCanaval 감사합니다; 그것이 내가 찾던 것입니다!
Ryan

답변:


35

당신의 쉘에는 pwd"스마트"하려고 하는 내장 기능 이 있습니다. cd심볼릭 링크 를 수행 한 후에 pwd는 실제 디렉토리로 이동 한 것처럼 내부 가 출력을 가짜로 만듭니다.

패스 -P에 옵션 pwd, 즉 실행 pwd -P. -P( "실제"에 대한) 옵션을 알려줍니다 pwd심볼릭 링크 추적을하고있는 디렉토리의 "진짜"경로를 표시 할 수 없습니다.

또는 pwd이런 종류의 마법을 수행하지 않는 (그리고 심지어는 할 수도없는) 실제 바이너리 도 있어야합니다. 이 바이너리 명시를 사용하십시오.

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ /bin/pwd
/home/michas/a

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.