2011-01-11 9 views

답변

5

첫 번째 방법 :

sh b.sh 

는 서브 쉘을 생성하고 서브 쉘에서 b.sh 실행됩니다.

. ./b.sh 

소스 b.sh 따라서이 방법으로 그 일의 결과 중 하나는

두 번째 방법 a.sh로 돌아 가면 b.sh에서 설정 한 환경 변수는 단순히 사라질 것입니다 b.sh에 설정된 env 변수는 b.sh가 반환 할 때 a.sh에 계속 표시됩니다.

+0

완벽 ... 감사합니다. ennuikiller :) –

1

두 번째 방법은 "소싱"이라고하며, 스크립트를 가져 와서 동일한 쉘에서 실행합니다.

두 가지 이유가 있습니다 : 속도, 그리고 두 번째 스크립트는 첫 번째 스크립트에서 환경 변수를 설정할 수 있습니다. 일반적으로 스크립트 나 프로그램을 실행할 때 호출자의 환경을 변경할 수 없습니다.

소싱은 다른 쉘 프로세스를 분기하고 시작할 필요가 없기 때문에 더 빠릅니다. 어떤 시스템에서는/etc/init/rc 스크립트와 같은 것들에 사용되는 것을 볼 수 있지만 성능 차이는 대부분의 경우 중요하지 않을 수 있습니다. 또한 스크립트를 소싱 할 때 신호 처리와 관련하여 약간의 미묘한 차이가 있습니다.

+0

감사합니다. blueshift –

관련 문제