Isso porque, quando você executa um script a partir do terminal, isso não é executado no terminal atual do shell, mas em uma subcamada. As variáveis, funções e aliases criados neste subshell são conhecidos apenas para a sessão bash específica dessa sub-camada. Quando esse shell sai e o pai recupera o controle, tudo é limpo e todas as alterações no estado do shell feitas pelo script são esquecidas.
Para evitar isso, você pode criar o script no terminal atual, usando o seguinte comando:
source Script.sh
ou simples:
. Script.sh #dot, space and the path to the script
Além disso, seu Script.sh
deve se parecer com:
#!/bin/bash
source /path/to/SetEnv #if you want that your script to know about 'SetEnv' function.
SetEnv
echo $PATH
Mais sobre: link .