I would put the command you want to run in the second exec node into the script you want to source and just launch that script in a single exec node. Keeps things self-contained
Environmental variables are not global, but they can look that way because a "standard" set is generally created in various .bashrc and/or .profile files that are highly system dependent and loaded when a new login shell is created and possibly a different or null set when a non-interactive (not attached to a "terminal") shell is launched.
I try to avoid using environmental variables whenever possible.