프로세스가 논리적 작업 디렉터리와 물리적 작업 디렉터리를 모두 상속합니까?

프로세스가 논리적 작업 디렉터리와 물리적 작업 디렉터리를 모두 상속합니까?

프로세스가 시작되면 상위 프로세스의 작업 디렉터리를 상속한다는 것을 알고 있습니다. 그러나 논리적 및 물리적 작업 디렉터리를 모두 상속합니까, 아니면 실제 작업 디렉터리만 상속합니까?

답변1

흠, 일종의. "논리적" 작업 디렉토리는 환경 변수에 포함됩니다 PWD.environ(7)"일부 쉘에 의해 설정"되어 있으므로 분명히 응용 프로그램에 따라 다릅니다. 또 다른 문제는 다른 프로그램이 이를 읽는 경우입니다.

/tmp$ ln -s ~ link  
/tmp$ cd link  
/tmp/link$ bash -c "pwd"
/tmp/link
/tmp/link$ zsh -c "pwd" 
/home/itvirta
/tmp/link$ dash -c "pwd"
/tmp/link

Bash하고 dash그것에 의존하는 것 같지만 zsh그렇지 않습니다 (내 시스템에서는 구성 가능하다고 확신합니다).

답변2

그만큼getcwd시스템 호출은 다음과 같이 물리적 경로 이름을 반환합니다.POSIX다음을 명령한다

경로 이름에는 점, 점-점 또는 심볼릭 링크인 구성 요소가 포함되어서는 안 됩니다.

Linux는 CWD를 전달하기 위해 이름보다 더 낮은 수준의 메커니즘을 사용하는 것으로 보입니다. 다른 프로그램이 디렉터리를 CWD로 사용하는 동안 디렉터리 이름을 바꿀 수 있기 때문입니다.

관련 정보