I use a script, test.sh, written by someone else, the begins with a bash shebang:
#!/bin/bash -l
...
echo TEST: $TEST
From what I
The -l option (according to the man page) makes "bash act as if it had been invoked as a login shell". Login shells read certain initialization files from your home directory, such as .bash_profile. Since you set the value of TEST in your .bash_profile, the value you set on the command line gets overridden when bash launches.