./script
executará o arquivo script
localizado no diretório atual .
como um novo processo.
. script
chama a função de shell .
(que é um alias para source
) com o argumento script
. Isso é praticamente o mesmo que inserir todas as linhas contidas no shell atual.
Você não pode definir variáveis usando a primeira opção, pois as variáveis são definidas apenas para o novo processo. As variáveis só são exportadas de pai para filho e não o contrário. (ou seja, um processo chamado não pode modificar variáveis no processo atual.)