==== Diferencia entre las distintas maneras de ejecutar scripts en UNIX ("bash" / "sh", "./", "source", ".") ==== * "**./**" El script debe ser ejecutable y será ejecutado en un interprete de comandos nuevo. * "**bash XX.sh**" No es necesario que el fichero sea ejecutable y el script se ejecutará en una shell nueva. * "**source**" No necesita que el script sea ejecutable y se ejecuta sobre la misma shell. Por lo tanto los cambios de ruta, variables, etc tienen impacto sobre la shell en la que se ejecuta el script. * "**.**" Sinónimo de source (No confundirlo con "./"). **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 $