1. 0
  1. 1
     FOO="from a file"
    

    So we edit our script one more time:

     source ./vars
     echo "This is outputted ${FOO:-"from the script"}
    

    What will happen now?

    It’s instructive to realize what source (which is a synonym for .) does to realize that this is not all that surprising. This is (nearly) the same as writing the contents of vars directly into the file at the point of the source, so it will just (re)define FOO.