상단 답변은 #!/bin/bash
호출되는 하위 스크립트의 첫 번째 줄에 줄을 추가 할 것을 제안 합니다. 당신이 오두막을 추가 할 경우에도, 그것은 훨씬 빠릅니다 * 서브 쉘 스크립트를 실행하고 출력을 캡처 :
$(source SCRIPT_NAME)
이것은 동일한 인터프리터를 계속 실행하려고 할 때 (예 : bash에서 다른 bash 스크립트로) 하위 스크립트의 shebang 행이 실행되지 않도록합니다.
예를 들면 다음과 같습니다.
#!/bin/bash
SUB_SCRIPT=$(mktemp)
echo "#!/bin/bash" > $SUB_SCRIPT
echo 'echo $1' >> $SUB_SCRIPT
chmod +x $SUB_SCRIPT
if [[ $1 == "--source" ]]; then
for X in $(seq 100); do
MODE=$(source $SUB_SCRIPT "source on")
done
else
for X in $(seq 100); do
MODE=$($SUB_SCRIPT "source off")
done
fi
echo $MODE
rm $SUB_SCRIPT
산출:
~ ❯❯❯ time ./test.sh
source off
./test.sh 0.15s user 0.16s system 87% cpu 0.360 total
~ ❯❯❯ time ./test.sh --source
source on
./test.sh --source 0.05s user 0.06s system 95% cpu 0.114 total
* 예를 들어 바이러스 나 보안 도구 장치에서 실행되는 경우는 새로운 프로세스를 간부 인을 추가 100ms에 걸릴 수 있습니다.