쉘이 호출되는 현재 디렉토리를 계속 변경할 수 있으면서 쉘 스크립트가 하위 프로세스에서 실행되도록 어떻게 준비할 수 있습니까?
답변1
당신은 할 수 없습니다.
자식 프로세스가 시작되면 부모 셸의 환경이 자식 프로세스에 복사되고, 그 시점부터 이들은 서로 구별되고 완전히 독립적입니다. 하위 프로세스는 상위 프로세스의 환경을 직접 수정할 수 없습니다.
자녀가 부모에게 영향을 미칠 수 있는 유일한 방법은 부모에게 메시지를 보내고 부모가 조치를 취하도록 하는 것입니다.
eval "$( bash -c 'echo "cd /"' )" # message through command string to stdout
또는
# message through USR1 signal triggers predefined action
trap 'cd /' USR1
bash -c 'kill -s USR1 "$PPID"'