Note que exportação estaria bem (não afetaria o resto da sessão do shell) se você o fizesse em um subshell como:
staging_server() ( # <-- note the ( instead of { here.
set -o allexport
MY_ENV1="http://example.com"
MY_ENV2="http://example2.com"
MY_ENV3="http://example3.com"
MY_ENV4="http://example4.com"
exec start_server -p 1234 "$@"
)
Note que isso não implica um fork adicional, estamos apenas fazendo o fork anteriormente aqui.
O único caso em que isso implicaria uma bifurcação adicional seria se você usasse um shell embutido no lugar start_server
lá (nesse caso em alguns shells como bash
(um desses shells em que esse exec
é necessário) como não é feito implicitamente), usando exec
não chama isso de shell embutido).