상위 bash 스크립트가 하위 bash 스크립트의 CD 기록을 기억합니까?

상위 bash 스크립트가 하위 bash 스크립트의 CD 기록을 기억합니까?

예:

메인스크립트.sh

cd /mnt/something
./buildscripts/000-script.sh

000-script.sh

cd /mnt/otherthing
mkdir something
exit

답변1

예, 실행 프로세스는 다음과 같습니다.아니요상위 프로세스의 작업 디렉터리를 변경합니다.

예:

  • caller.sh

    #!/bin/bash
    echo -n "Caller 1 " ; pwd
    ./callee.sh
    echo -n "Caller 2 " ; pwd
    
  • 수신자.sh

    #!/bin/bash
    echo -n "Callee 1 " ; pwd
    cd /tmp
    echo -n "Callee 2 " ; pwd
    exit
    

호출이 caller.sh생성됩니다

Caller 1 /Users/corti/tmp
Callee 1 /Users/corti/tmp
Callee 2 /tmp
Caller 2 /Users/corti/tmp

인쇄할 때 볼 수 있듯이 Caller 2상위 프로세스에는 여전히 동일한 작업 디렉터리가 있습니다.

답변2

"아이"는 아무것도 기억하지 못합니다. 이는 현재 작업 디렉터리(cwd)에서 시작하는 프로세스의 기본 개념일 뿐입니다. Linux 시스템에서 /proc/*를 보면 각 프로세스에 대해 이 항목을 볼 수 있습니다.

관련 정보