Diferencia entre las distintas maneras de ejecutar scripts en UNIX ("bash" / "sh", "./", "source", ".")

Script de ejemplo / prueba de concepto.

#!/bin/bash
export variable=hola
echo "PID: $$"
echo "Valor de la variable: $variable"
pwd
cd $HOME/.config # Cámbiese por el directorio que se quiera.
pwd
~ $ bash ejemplo1.sh && echo "---> $variable"
PID: 5329
Valor de la variable: hola
/home/marta
/home/marta/.config
---> 

~ $ ./ejemplo1.sh && echo "---> $variable"
PID: 5334
Valor de la variable: hola
/home/marta
/home/marta/.config
---> 

########################################

~ $ source ejemplo1.sh && echo "---> $variable"
PID: 3370
Valor de la variable: hola
/home/marta
/home/marta/.config
---> hola

~/.config $ cd ..


~ $ source ./ejemplo1.sh && echo "---> $variable"
PID: 3370
Valor de la variable: hola
/home/marta
/home/marta/.config
---> hola

~/.config $