디렉토리 (예 : 모든 파일)는 이름으로 정의되지 않습니다. 이름을 디렉토리의 주소 로 생각하십시오 . 디렉토리를 옮길 때 여전히 같은 디렉토리입니다. 다른 집으로 이사하는 경우에도 여전히 같은 사람입니다. 디렉토리를 제거하고 같은 이름으로 새 디렉토리를 만들면 이전에 살던 집으로 이사하는 사람이 아닌 것처럼 새 디렉토리입니다.
각 프로세스에는 작업 디렉토리가 있습니다. cd
쉘 의 명령은 쉘의 현재 작업 디렉토리를 변경합니다. 이 pwd
명령은 현재 작업 디렉토리의 ¹ 경로를 인쇄합니다.
디렉토리 A를 제거했을 때, 이것은 부모 디렉토리에서 A에 대한 항목을 제거하는 것이 었습니다. 디렉토리 A 자체는 파일 시스템에 남아 있지만 이름이없는 분리 된 상태입니다. 프로세스, 즉 첫 번째 쉘에서 사용 중이므로 아직 삭제되지 않았습니다. 첫 번째 쉘에서 디렉토리를 변경하면 디렉토리가 마지막으로 삭제되었습니다. 프로세스가 여전히 열려있는 동안 파일이 삭제 될 때도 같은 일이 발생합니다. 파일의 디렉토리 항목이 즉시 제거되고 파일 자체는 사용이 중지되면 제거됩니다.
마찬가지로 디렉토리를 이동할 때 어떤 일이 발생하는지 관찰하십시오.
mkdir one two
touch one/1 two/2
cd one
ls
다른 껍질에서 :
mv one tmp
mv two one
mv tmp two
첫 번째 쉘에서 :
ls
파일 1
은 원래 호출 된 디렉토리에 one
있으며 이제는이라고 two
합니다. 파일 2
은 원래 호출 된 디렉토리에 two
있으며 이제는이라고 one
합니다.
¹ 좀 더 정확하게 말하면, 심볼릭 링크 나 다른 미묘한 부분이 포함 된 경로는 고유하지 않을 수 있습니다.
cd $PWD
.