¿Qué es el comando source?
El comando source (también representado por un solo punto .) es una built‑in de los shells Bash, Zsh y otros que permite leer y ejecutar el contenido de un archivo de script dentro del mismo proceso de shell. A diferencia de ejecutar un script con ./script.sh o bash script.sh, source no crea un subproceso; por tanto, cualquier variable, función o alias que el script defina queda disponible en el shell actual después de que la ejecución termine.
Sintaxis básica
La forma más simple es:
source nombre_del_script.sh
o, equivalentemente:
. nombre_del_script.sh
El punto debe ir seguido de un espacio antes del nombre del archivo. Si el script no está en el directorio actual, se puede indicar una ruta relativa o absoluta.
¿Por qué usar source en lugar de ejecutar el script normalmente?
- Persistencia de variables: Las variables definidas dentro del script permanecen en el entorno del shell.
- Funciones y alias: Se pueden definir funciones que luego se llaman directamente desde la línea de comandos.
- Recarga de configuración: Archivos como
.bashrc,.zshrco.profilese recargan con source para aplicar cambios sin cerrar la terminal. - Depuración y pruebas: Permite probar fragmentos de código en el mismo entorno donde se trabajan otros proyectos.
Ejemplos prácticos
1. Definir y usar una variable
Creemos un archivo llamado config.sh con el siguiente contenido:
# config.sh
MI_VAR='Hola desde source'
export OTRA_VAR=42
Luego, en la terminal:
source config.sh
echo $MI_VAR
echo $OTRA_VAR
La salida será:
Hola desde source
42
2. Cargar funciones
En funciones.sh:
saludar() {
echo '¡Hola, '$1'!'
}
Luego, en la terminal:
source funciones.sh
saludar Mundo
Resultado:
¡Hola, Mundo!
3. Recargar la configuración del shell
Si editas .bashrc y quieres aplicar los cambios:
source ~/.bashrc
Limitaciones y consideraciones
- Source solo funciona en shells que lo implementen como built‑in (Bash, Zsh, Ksh, etc.). En shells más mínimos como
dashpuede no estar disponible. - Si el script contiene comandos que cambian el directorio de trabajo (
cd) o modifican variables de entorno (export), esos cambios afectarán al shell actual, lo cual puede ser deseado o no según el caso. - Es importante asegurar que el script sea de confianza, ya que source ejecuta todo su contenido con los mismos privilegios que el usuario actual.
Conclusión
El comando source es una herramienta esencial para cualquier usuario de Linux que quiera mantener un entorno de trabajo dinámico y eficiente. Permite integrar scripts de configuración, definir variables y funciones reutilizables, y recargar ajustes sin abandonar la sesión actual. Dominar su uso mejora la productividad y evita la creación innecesaria de subprocesos, haciendo que el shell sea más reactivo y adaptable a tus necesidades.


