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
답변
그것은 당신이 어디에 있는지를 기억하는 쉘의 기능입니다.
이 경우 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
답변
대비 pwd
및 /bin/pwd
.
pwd
, 많은 쉘에 내장 된 명령으로, 쉘이 자신을 생각하는 위치를 알려줍니다. 따라서 심볼릭 링크를 “소프트 링크”를 마치 실제 디렉토리처럼 취급합니다.
/bin/pwd
필요한 경우 파일 시스템 트리를 순회하여 실제 위치를 알려주는 외부 프로그램입니다 /
. 위쪽을 통과 할 때 존재하지 않는 심볼릭 링크를 고려하지 않습니다...
답변
다른 답변은 /bin/pwd
셸과 비교했습니다 builtin pwd
.
언급 한 Windows 스타일에서 심볼릭 링크를 따르려면 다음을 사용하십시오 cd -P
: PWD 변수가 그에 따라 변경됩니다.
-P
기본적 으로 사용하려면 이 줄을 .bashrc
또는에 추가하면됩니다 .zshrc
.
set -P
다른 껍질은 다를 수 있습니다.