심볼릭 링크를 통해 cd 할 때 pwd가 실제 경로 대신 심볼릭 링크를 표시하는 이유는 무엇입니까?


19

ln -s 1 2디렉토리 안에있는 test디렉토리에 대한 소프트 링크 ( )를 작성하고 소프트 링크 ( )를 cd 2열고을 사용하여 현재 경로를 표시했습니다 pwd. 표시된 경로는 ~/test/2아니었다 ~/test/1.

Windows와 같은 OS에서는 다르므로 바로 가기를 사용하면 실제 디렉토리로 이동합니다. 이 소프트 링크가 Linux에서 작동하는 방식이 약간 혼란 스럽습니다. 과 같은 바로 가기가 Windows아닙니까? 경로가 아닌 이유는 무엇 ~/test/1입니까?

 $ mkdir test
 $ cd test
 $ mkdir 1
 $ ln -s 1 2
 $ cd 2
 $ pwd
 /home/dazz/test/2

2
스크린 샷을 삭제 해 주셔서 감사합니다. 다음 에 삭제하고 다시 게시하는 대신 질문을 수정 하십시오. 너무 많은 질문을 삭제하면 요청이 금지 될 수 있습니다. 그 금지는 자동으로 이루어 지므로 우리는 그것에 대해 많은 것을 할 수 없습니다. 어쨌든 편집 은 질문 을 범하기 때문에 다시 게시 할 필요가 없습니다 .
terdon

왜 두 번 물어봐? askubuntu.com/q/610133/367165
AB

AB 같은 포럼?
DScript

답변:


18

그것은 당신이 어디에 있는지를 기억하는 쉘의 기능입니다.
이 경우 realpath설치 할 수있다 :

$ realpath 
/home/dazz/test/1

그리고 파이썬이 있다면 부족합니다.

$ python -c "import os; print(os.path.realpath('.'))"
/home/dazz/test/1

또는 readlink (coreutils에서) :

$ readlink -f .
/home/dazz/test/1

또는 /bin/pwd(쉘 내장이 pwd아님) :

$ /bin/pwd
/home/dazz/test/1

ls -l /proc/$$/cwd커널의 /proc파일 시스템 인터페이스를 이용합니다.
Bruce Ediger

8
또한 pwd -P현재 디렉토리의 논리적 경로 대신 물리적 경로를 인쇄해야합니다.
godlygeek

8

대비 pwd/bin/pwd.

pwd, 많은 쉘에 내장 된 명령으로, 쉘이 자신을 생각하는 위치를 알려줍니다. 따라서 심볼릭 링크를 "소프트 링크"를 마치 실제 디렉토리처럼 취급합니다.

/bin/pwd필요한 경우 파일 시스템 트리를 순회하여 실제 위치를 알려주는 외부 프로그램입니다 /. 위쪽을 통과 할 때 존재하지 않는 심볼릭 링크를 고려하지 않습니다...


6

다른 답변은 /bin/pwd셸과 비교했습니다 builtin pwd.

언급 한 Windows 스타일에서 심볼릭 링크를 따르려면 다음을 사용하십시오 cd -P: PWD 변수가 그에 따라 변경됩니다.

-P기본적 으로 사용하려면 이 줄을 .bashrc또는에 추가하면됩니다 .zshrc.

set -P

다른 껍질은 다를 수 있습니다.

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