Quando você executa um script, ele abre um novo subshell para ele, não alterando as variáveis de ambiente (incluindo seu diretório de trabalho: $ PWD) do shell em que você está. Se desejar que o script seja executado no mesmo shell como você está, retendo assim as mudanças nas variáveis de ambiente que ele faz, fonte-lo em vez de executar. Assim:
source my-script
ou:
. my-script
Isso, no entanto, deixará para trás todas as variáveis temporárias usadas pelo seu script. Se você quiser evitá-lo, crie uma função dentro do script e declare todas as variáveis temporárias locais. Assim:
function main()
{
local var1=whatever
cd /path/to
do-something
...
}
main
Isso, quando chamado com source
, deixará para trás todas as mudanças de variáveis, como o diretório de trabalho, mas não deixará variáveis temporárias para trás.