Widziałem przykłady skryptu opakowania, które w skrócie są następujące:
#!/bin/bash
myprog=sleep
echo "This is the wrapper script, it will exec "$myprog""
exec "$myprog" "$@"
Jak widać powyżej, exec
prawie natychmiast zastępują nowo utworzoną powłokę $myprog
. Można to osiągnąć bez exec
:
#!/bin/bash
myprog=sleep
echo "This is the wrapper script, it will exec "$myprog""
"$myprog" "$@"
W tym ostatnim przykładzie uruchamiana jest nowa instancja bash, a następnie $myprog
uruchamiana jako proces potomny instancji bash.
Jakie są zalety pierwszego podejścia?
exec
wbudowanej powłoki .