Comando source de Linux

Linux 命令大全Manual de comandos 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

sourcenombre de archivo[parámetros]

O utilice la notación equivalente de punto (.):

Ejemplo

. archivo[parámetros]

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

source ~/.bashrc

2. Activar el entorno virtual

Activar el entorno virtual en el desarrollo de Python:

Ejemplo

source venv/bin/activate

3. Actualizar el entorno del shell actual

Cuando modifique archivos de configuración y no quiera volver a iniciar sesión:

Ejemplo

source /etc/profile

4. Desarrollo de scripts modulares

Dividir un script grande en varios archivos pequeños e importarlos con source:

Ejemplo

# En el script principal
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

#!/bin/bash
export MY_VAR="Hello World"
alias ll='ls -alF'

Cargar usando source:

Ejemplo

source myenv.sh
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

source debug_script.sh
# Las variables establecidas en el script ahora pueden verificarse en el shell actual

6. Precauciones y problemas comunes

  1. Seguridad: source ejecuta el contenido del archivo directamente en el entorno actual, solo haga source de archivos de confianza
  2. Búsqueda de archivos: source usa el PATH del shell actual para buscar archivos; se recomienda usar la ruta completa
  3. Manejo de errores: si el archivo al que se le hace source contiene errores, afectará al shell actual
  4. Problema de recursión: evite hacer source de sí mismo dentro de un archivo sourced, ya que causará un bucle infinito

Errores comunes

Ejemplo

# Error: olvidó que el archivo necesita permisos de ejecución
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 variables
  • sourcePuede ejecutar cualquier comando

2. source vs eval

  • evalEjecuta una cadena en lugar de un archivo
  • sourceMás seguro, con un origen de archivo claro

Linux 命令大全Manual de comandos de Linux

Otras extensiones