![홈브류 쉘에서 CD 명령이 작동하지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/69794/%ED%99%88%EB%B8%8C%EB%A5%98%20%EC%89%98%EC%97%90%EC%84%9C%20CD%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
나는 C로 매우 기본적인 쉘을 작성했습니다. 입력을 읽은 다음 이를 실행합니다 system(lineCopy);
(lineCopy는 입력의 복사본입니다). 을 제외한 모든 명령이 잘 실행됩니다 . 다른 디렉터리에 액세스 cd
하려고 하면 현재 디렉터리에 그대로 유지됩니다. 존재하지 않는 디렉토리에 액세스 cd
하려고 하면 , just like it should 이라는 메시지가 나타납니다 . 그러나 존재하는 디렉토리로 cd를 시도하면 명령을 읽지만 동일한 디렉토리에 남아 있습니다. 현재 PWD를 저장하는 변수는 지속적으로 업데이트되므로 그럴 수 없습니다. 다른 모든 명령은 완벽하게 실행됩니다. 그런데 왜 안되죠?cd
sh: 1: cd: can't cd to /some_nonexistant_directory
cd
답변1
환경 변수를 변경해 보았으나 작동하지 않았습니다. 시스템은 환경과 현재 작업 디렉터리를 상속합니다. 따라서 각 시스템 호출은 상위 시스템에서 현재 작업 디렉터리를 상속받습니다.