symlinks
내 홈 디렉토리에는 모든 심볼릭 링크가 포함된 폴더가 있습니다 . CDPATH
다음을 수행할 수 있도록 이 폴더를 내 폴더에 추가했습니다 .
~$ cd FarAwayDirectory
~/symlinks/FarAwayDirectory$
pwd
나는 다음과 같은 결과를 얻는다 는 것을 알았습니다 .
~/symlinks/FarAwayDirectory
-> ㅏ
대신에:
.../.../.../FarAwayDirectory
-> 두번째
그것이 내가 계속해서 얻는 것입니다 cd
.
그래서 내 질문은 다음과 같습니다디렉토리에서 작업ㅏ디렉토리 작업과 동일두번째?
답변1
예. 디렉터리 A에서 작업하는 것은 디렉터리 B에서 작업하는 것과 동일합니다.
심볼릭 링크는 다른 파일을 가리키는 특수 파일입니다. ~/symlinks/FarAwayDirectory
실제로 자체 데이터가 없습니다(기본 파일 시스템 메타데이터 제외). 대신 실제로 심볼릭 링크한 디렉터리를 가리킵니다.
에서 파일을 생성하고 해당 파일이 실제 디렉터리의 전체 경로에 있는지 확인하여 ~/symlinks/FarAwayDirectory
이를 테스트 할 수 있습니다.
답변2
pwd
예, 내장된 버전을 사용하면 bash
출력 A를 얻게 됩니다.
하지만 독립 실행형 바이너리 버전을 명시적으로 호출해 보세요 pwd
.
$ /bin/pwd
나는 당신이 당신의 출력 B를 보게 될 것이라고 생각합니다.
기본적으로 이는 bash
심볼릭 링크를 통해 디렉터리에 도달하므로 경로가 기본적으로 "논리적" 형식(출력 A)으로 표시된다는 점을 기억하기 때문입니다. 유사한 모든 경우에 "물리적" 경로(출력 B)를 표시하려면 set -P
이를 사용하여 이를 달성할 수 있습니다.
또는 경우에 따라 수행하려는 경우 bash
내장 cd
명령이 "-L" 및 "-P" 옵션도 지원합니다.
답변3
A 디렉토리가 없습니다.
심볼릭 링크인데,디렉토리가 아님. 작업 디렉토리는같은 디렉토리두 경우 모두. 유일한 차이점은 PWD
변수 값에 있으며 이는 특정 명령의 내용에 영향을 미칩니다.보고서현재 디렉토리의 이름으로. 예를 들어, 많은 셸에 내장된 명령은 무시하라는 지시가 없는 pwd
한 셸 변수의 값을 보고합니다 . PWD
외부 pwd
명령(옵션을 사용하여 지시한 경우 -L
)은 상속받은 환경 변수의 값을 확인하고 PWD
현재 디렉터리 이름으로 체크아웃된 경우 해당 값도 사용합니다.