comportement source du script de shell

Je suis nouveau au script shell. J’ai un script shell qui source un autre fichier. Un autre fichier est juste un fichier avec une paire nom-valeur. J’ai une confusion ici.

test.dat TEST_VARIABLE_PATH=/usr/project/workspace 

fichier script (test_script.sh)

 TEST_VARIABLE_PATH= source test.dat echo ${TEST_VARIABLE_PATH} 

La déclaration echo ci-dessus imprime différentes valeurs qui me rendent confus. En ligne 1, si je fais

 TEST_VARIABLE_PATH=/somepath/ 

, même si j’ai source test.dat qui a la variable TEST_VARIABLE_PATH déjà définie, echo imprime seulement

 TEST_VARIABLE_PATH=/somepath/ 

où la source du fichier n’a pas écrasé la variable.

Supposons que si j’ai la ligne 1 comme

 TEST_VARIABLE_PATH=\`dirname $0\`/../ 

, la commande source écrase et fait écho

 TEST_VARIABLE_PATH=/usr/project/workspace 

Pourquoi cette source se comporte différemment? S’il vous plaît, aidez-moi à comprendre.

Il semble que vous ne source pas vraiment le fichier.

Pour le faire correctement, placez le chemin complet du fichier, comme:

 source '/full/path/to/file'