Quando você executa um script, ele é executado em um processo filho separado, que não pode afetar as variáveis de ambiente no processo pai (por exemplo, o shell interativo). No entanto, se você usar o comando "source", ele lerá as linhas do arquivo de script e as executará no shell atual, para que isso funcione.