Introducción
El source
lee y ejecuta comandos del archivo especificado como argumento en el entorno de shell actual. Es útil cargar funciones, variables y archivos de configuración en scripts de shell.
source
es un shell integrado en Bash y otros shells populares utilizados en los sistemas operativos Linux y UNIX. Su comportamiento puede diferir ligeramente de un caparazón a otro.
Sintaxis del comando de origen
La sintaxis del source
es la siguiente:
source FILENAME [ARGUMENTS]. FILENAME [ARGUMENTS]
source
y.
(un punto) son el mismo comando.- Si
FILENAME
no es una ruta completa a un archivo, el comando buscará el archivo en los directorios especificados en la$PATH
entorno $ PATH. Si el archivo no se encuentra en el$PATH
, buscará el archivo en el directorio actual. - Si
ARGUMENTS
, se convertirán en parámetros posicionales para elFILENAME
. - Si
FILENAME
existe, el comando desource
0
; de lo contrario, si no se encuentra el archivo, devolverá1
.
Ejemplo de comando fuente
En esta sección, veremos algunos ejemplos básicos de cómo usar el comando source
Si tiene scripts de shell que usan las mismas funciones, puede extraerlos en un archivo separado y luego generar ese archivo en sus scripts.
En este ejemplo, crearemos un archivo que incluye una función bash que verifica si el usuario que ejecuta el script es root y, de lo contrario, muestra un mensaje y sale del script.
sudo nano functions.sh
Pega el siguiente código:
check_root () {
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
}
Ahora, en cada uno de sus scripts que solo debe ejecutar el usuario root, proceda con el comando de origen del functions.sh
y llame a la función:
#!/usr/bin/env bash
source functions.sh
check_root
echo "I am root"
Si ejecuta el script anterior como usuario no root, el script imprime " Este script debe ejecutarse como root " y sale.
La ventaja de este enfoque es que sus scripts serán más pequeños y más legibles, puede reutilizar el mismo archivo de función tantas veces como sea necesario y, en caso de que necesite modificar una función, solo modificará un archivo.
Archivo de configuración de Bash
Con el source
, también puede leer variables de un archivo. Las variables deben configurarse utilizando la sintaxis Bash, VARIABLE=VALUE
.
Creemos un archivo de configuración de prueba:
sudo nano config.sh
Pega el siguiente código:
VAR1="foo"
VAR2="bar"
En su script de bash, use el source
para leer el archivo de configuración:
#!/usr/bin/env bash
source config.sh
echo "VAR1 is $VAR1"
echo "VAR2 is $VAR2"
Si ejecuta el script, la salida se verá así:
VAR1 is foo
VAR2 is bar
Conclusión
En esta guía, aprendió a usar el source
integrado en los scripts de shell.