A better way to understand it is that (to the best of my knowledge) no
process can directly affect the environment of another. They are all isolated.
When one process starts another, the "child" takes on a copy of the the parent environment, or at least the values that are exported
. But after initialization is complete, no outside process can change anything directly, or vice-versa. Any changes to a process' environment must be made from within that process.
Depending on your final purposes, you might want to consider converting your script into a function in the main shell. Since the function runs in the current environment, any final values will remain after it exits.