O motivo pelo qual você mostra não funciona, como você deve ter suspeitado é que o $()
cria um subshell. As alterações dentro de uma subcamada não persistem para o pai e, como você diz, não têm influência sobre o ambiente atual. No entanto, PROMPT_COMMAND
pode fazer o que você deseja sem criar um subshell:
export PROMPT_COMMAND='source /etc/profile.d/proxy.sh'