Comando source de Linux
1. ¿Qué es el comando source?
source es un comando integrado del shell en sistemas Linux/Unix, que se utiliza para ejecutar los comandos contenidos en un archivo especificado dentro del entorno del shell actual. A diferencia de ejecutar el script directamente, el comando source no crea un nuevo sub-shell, sino que ejecuta el contenido del archivo directamente en el shell actual.
Analogía
Se puede imaginar el comando source como una operación de "copiar y pegar":
- Ejecución normal del script: es como enviar el archivo a otra persona para que lo ejecute (abrir una nueva terminal)
- Comando source: es como pegar directamente el contenido del archivo en tu terminal actual para ejecutarlo.
2. Sintaxis básica del comando source
Ejemplo
O utilice la notación equivalente de punto (.):
Ejemplo
Descripción de parámetros
- nombre de archivo: ruta del archivo de script a ejecutar (puede ser una ruta relativa o absoluta)
- parámetros: opcional, parámetros que se pasan al script
3. Diferencia entre el comando source y ejecutar el script directamente
| Elemento de comparación | comando source | ejecutar script directamente |
|---|---|---|
| Entorno de ejecución | Entorno del shell actual | Nuevo entorno de sub-shell |
| Impacto en variables | Modifica las variables de entorno del shell actual | No afecta el entorno del shell actual |
| Relación de procesos | No crea un nuevo proceso | Crea un nuevo proceso |
| Efecto al salir | Si el script contiene exit, saldrá del shell actual | Solo sale del sub-shell |
4. Casos de uso típicos del comando source
1. Cargar configuración de variables de entorno
El uso más común es cargar~/.bashrco/etc/profilearchivos de configuración como:
Ejemplo
2. Activar el entorno virtual
Activar el entorno virtual en el desarrollo de Python:
Ejemplo
3. Actualizar el entorno del shell actual
Cuando modifique archivos de configuración y no quiera volver a iniciar sesión:
Ejemplo
4. Desarrollo de scripts modulares
Dividir un script grande en varios archivos pequeños e importarlos con source:
Ejemplo
source utils.sh # Importar funciones de utilidad
source config.sh # Importar configuración
5. Ejemplos de uso práctico
Ejemplo 1: Cargar variables de entorno personalizadas
Crear un archivo de pruebamyenv.sh:
Ejemplo
export MY_VAR="Hello World"
alias ll='ls -alF'
Cargar usando source:
Ejemplo
echo $MY_VAR # Salida: Hello World
ll # Equivalente a ls -alF
Ejemplo 2: Depurar scripts
Al depurar scripts, puede usar source para conservar las variables establecidas en el script:
Ejemplo
# Las variables establecidas en el script ahora pueden verificarse en el shell actual
6. Precauciones y problemas comunes
- Seguridad: source ejecuta el contenido del archivo directamente en el entorno actual, solo haga source de archivos de confianza
- Búsqueda de archivos: source usa el PATH del shell actual para buscar archivos; se recomienda usar la ruta completa
- Manejo de errores: si el archivo al que se le hace source contiene errores, afectará al shell actual
- Problema de recursión: evite hacer source de sí mismo dentro de un archivo sourced, ya que causará un bucle infinito
Errores comunes
Ejemplo
source ./script.sh # Si script.sh no es legible
# Error: el archivo no existe
source non_exist_file.sh
7. Comparación de alternativas
1. source vs export
exportSolo establece variablessourcePuede ejecutar cualquier comando
2. source vs eval
evalEjecuta una cadena en lugar de un archivosourceMás seguro, con un origen de archivo claro
Manual de comandos de Linux