함수에서 "소스"가 효과적으로 사용됩니까?

함수에서 "소스"가 효과적으로 사용됩니까?

소개처럼: 만약 secondary.sh있다면

functionX(){
   ...
}

자체 기능을 사용하여 다음과 같이 선언 했습니다 primary.sh.source secondary.sh

# primary.sh content
source secondary.sh

functionA(){
   ...
}
functionB(){
   ...
}

내 이해에 따르면동등하다전자의 모든 소스 코드를 복사하여 후자에 붙여넣습니다. 그래서:

# primary.sh content
functionX(){
   ...
}

functionA(){
   ...
}
functionB(){
   ...
}

뭔가 잘못된 것이 있으면 바로잡아주세요.

또한 스크립트 파일은 현재 셸에서 실행되며 모든 변경 사항(예: 환경 변수)은 현재 셸에 영향을 미치고 반영됩니다. 나는 지금까지 괜찮습니다. 다시 한 번 잘못된 내용이 있으면 정정해 주시기 바랍니다.

이제 동일한 primary.sh스크립트 파일이지만 시나리오가 다른 경우 - 다음과 같은 경우:

source ${SPECIFIC_PATH}/secondary.sh

functionA(){
   ...
}
functionB(){
   ...
}

startPrimary(){
 ...
 SPECIFIC_PATH="/somepath"
 ...

}

source최상위에 있지만 SPECIFIC_PATH아직 실행되도록 정의되지 않았기 때문에 실패합니다 .

그러나 다음과 같이 변경되면:

functionA(){
   ...
}
functionB(){
   ...
}

startPrimary(){
 ...
 SPECIFIC_PATH="/somepath"
 ...
 source ${SPECIFIC_PATH}/secondary.sh
}

SPECIFIC_PATH선언되었기 때문에 작동합니다 .그리고 source필요에 따라 수행됩니다.

이 시나리오는 여기에서 다룹니다.굉장히 유사한:

하지만 – 작동합니까?

제가 이런 질문을 드리는 이유는 다음 사항이 걱정되기 때문입니다.

secondary.sh함수가 선언되고 실제로 복사/붙여넣기된 경우 primary.sh- In유닉스/리눅스 쉘 스크립트다른 함수 내에서 함수를 선언하는 것이 유효합니까? 내 요점을 이해하시기 바랍니다. 나는 다음과 같은 일이 일어나고 있다고 가정합니다.

functionA(){
   ...
}
functionB(){
   ...
}

startPrimary(){
 ...
 SPECIFIC_PATH="/somepath"
 ...
 functionX(){
   ...
 }
}

관련 정보