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 could see, this has an effect on variables used inside the script:
TEST=hey ./test.sh
, I can see TEST: hop
, hop
being the value of variable TEST
in my .bash_profile
export TEST=hey
before running the script-l
flag, the same command returns TEST: hey
, as I would have expectedCan someone please explain this behaviour ? The help of bash did not... help.
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.