. t
não abrirá um novo shell para executar t, então todas as variáveis criadas ou modificadas permanecerão após a execução. t será procurado em $ PATH, então se você quisesse executar t a partir do caminho onde você está agora o comando deveria ter sido . ./t
./t
executará t que está no caminho onde estamos agora gerando um shell para execução.
Para esclarecer um pouco mais. Supose t contém:
#!/bin/bash
data=hello
Depois de você executar ./t
, você pode echo $data
da linha de comando e não obterá nada, mas se você executar . ./t
e executar echo $data
, receberá um oi em seu tela.