당신은 정말로 있습니다 /home/cpm135/public_html/class
- "현재 작업 디렉토리는 무엇입니까"에 대한 유일한 정답입니다.
당신이 언급 할 때 /var/lib/class
... 그것은 실제로 당신이 어디에 있는지 에 관한 것이 아니라 거기 에 도착한 경로 에 관한 것 입니다.
당신이 실행할 때 /bin/pwd
, 그것은을보고 현재 작업 디렉토리를 알아냅니다. 및 .. 디렉토리 (상단에 나열된 디렉토리 ls -la
)를 사용하여 .. 디렉토리와 일치하는 디렉토리를 찾습니다. 그런 다음 .. 및. 동일한 디렉토리를 참조하십시오. 모든 작업이 완료되면 현재 작업 디렉토리가 무엇인지 알게됩니다.
pwd
쉘 내장 을 실행할 때이 절차를 따르지 않습니다 (필요한 경우 일부를 수행 할 수도 있음). 대신 여기에 도달 한 경로를 기억합니다. 따라서 cd
명령 을 수행 할 때마다 쉘은 현재 위치를 찾기위한 경로의 일부로 기억하고 수행 한 pwd
모든 cd
명령을 기반으로 계산 한 것을 인쇄 합니다-실제 또는 아닐 수도 있습니다 작업 디렉토리.
당신이하고 foo에 ln -s . foo
계속 cd
들어가면 상황이 정말 이상해질 수 있습니다 - /bin/pwd
당신은 여전히 같은 디렉토리에 pwd
있다고 말할 것입니다. 그러나 셸 내장 은 /foo/foo/foo/foo/foo/foo
실제로 존재하지는 않지만 쉘에 내장되어 있다고 말할 것 입니다. (그렇다고 할 수 있습니다 cd
.)
디렉토리 이름을 바꾸면 혼란의 또 다른 원인이 있습니다. /bin/pwd
그런 다음 변경 사항을 즉시 포착하지만 기본 pwd
디렉토리 이름은 중요하지 않은 것을 수행 할 때까지 내장 기능 이 작동하지 않습니다.