답변:
쉘은 현재 작업중인 디렉토리로 연결되는 심볼릭 링크를 추적합니다. cd 내장 쉘입니다. help cd 주 (예 : bash ) :
옵션 :
-L심볼릭 링크가 강제로 수행되도록합니다. 인스턴스를 처리 한 후 DIR의 심볼릭 링크를 해결합니다...
-P심볼릭 링크를 따르지 않고 물리적 디렉토리 구조를 사용합니다. 인스턴스를 처리하기 전에 DIR의 심볼릭 링크를 해결합니다...
[...]
기본값은 다음과 같이 심볼릭 링크를 따르는 것입니다.-L지정되었습니다.
당신은 시도 할 수 있습니다 cd -P .. 차이점을 확인하십시오. 또 다른 예는 pwd -L 과 pwd -P (동안 pwd 또한 내장 쉘입니다.)
기본 동작은 다음과 같이 변경할 수 있습니다. set -P 과 set +P. 만나다 help set 자세한 사항은.
반면에 ls 쉘의 추적 기능이 도움이되지 않는 별도의 실행 파일입니다. 그러나 당신은이 트릭과 심볼릭 링크를 따라갈 수 있습니다 :
(cd -L .. && ls -l)
기본적으로 우리는 cd 심볼릭 링크를 기준으로 현재 작업 디렉토리를 변경합니다 (그리고 나는 명시 적으로 디폴트를 사용했습니다 -L 옵션), 다음 호출 ls -l. 그만큼 && 오퍼레이터 수단 ls 다음 경우에만 실행됩니다. cd 성공합니다. 괄호 () 내부에있는 모든 것을 하나의 서브 쉘에서 처리하도록하십시오. 이것은 속임수입니다 : cd 명령이이 서브 쉘에만 영향을 주며 메인 쉘에는 아무 것도 변경되지 않습니다. cd 뒤로.