Bash 스크립트 내에서 Bash 스크립트 실행

Bash 스크립트 내에서 Bash 스크립트 실행

환경 관리자를 설치하는 bash 스크립트를 작성 중인데, 이는 여러 디렉터리에 무언가를 설치해야 함을 의미합니다. 내 다른 거 좀 봐질문자세한 내용은. 그러나 그것은 내 접근 방식을 다시 생각하게 만들었습니다.

나는 이제 이것을 3개의 별도 bash 스크립트로 만드는 것을 고려하고 있습니다. 그러면 한 사람이 다른 사람에게 전화를 겁니다. 문제는 다음과 같습니다. source .bash_profile상위 셸에서 작업을 수행해야 합니다. 문제는 bash 스크립트 내에서 호출된 bash 스크립트가 새 셸이나 상위 셸에서 실행될 것인가, 아니면 상위 셸 내의 호스트 bash 스크립트 셸 내의 새 셸에서 실행될 것인가입니다.

"쉘-셉션" 그게 내 뇌를 요리하고 있다는 걸 알아요. 저는 이 프로세스를 자동화하고 싶은데 이것이 바로 제가 직면하고 있는 벽입니다.

답변1

셸에서 명령을 실행하는 경우 해당 명령은 항상 해당 셸의 하위 프로세스로 실행됩니다.

  1. 내장 쉘입니다 (예 cd: )
  2. 출처는 ( . /path/to/file, source /path/to/file)
  3. 그것은에 의해 실행됩니다exec

간편체크를 이용하시면 됩니다 ps -e -o pid,ppid,user,args.

source .bash_profile변수가 내보내기용으로 표시된 경우에만 하위 쉘에 영향을 미칩니다( 참조 declare -x).

답변2

실제 차이점은 다음과 같습니다.

  • 명령을 실행하면 셸이 하위 프로세스를 생성합니다. 이전에 하위 프로세스에 정의된 모든 환경 변수는 상위 프로세스에서 손실됩니다.

  • 스크립트를 사용하여 source현재 프로세스(상위 프로세스 내)에서 강제로 실행되도록 합니다. 그러면 스크립트의 환경 변수가 보존됩니다.

관련 정보