El comando fuente en Linux es una función bastante popular que ejecutan los administradores del sistema a diario.
Pero, ¿cuál es la función del comando fuente?
Se utiliza para actualizar el entorno de shell actual , el comando fuente también se puede usar para importar funciones a otros scripts de bash o para ejecutar scripts en el entorno de shell actual.
En el tutorial de hoy, vamos a ver cómo se debe usar el comando fuente en Linux.
Los comandos se ejecutarán en un entorno Debian 10 con GNOME, pero funcionarán para todas las distribuciones.
Interiores del comando fuente
Antes de comenzar, es importante tener una comprensión completa de qué son las variables de entorno y de shell.
De forma predeterminada, en Linux, su sistema ya posee un par de variables de entorno para almacenar diversa información, como el shell a utilizar, su nombre de host o su nombre de usuario actual.
Las variables de entorno son inicializadas por el sistema y son heredadas por todos los procesos del sistema. Como consecuencia, cuando ejecuta una instancia de shell, debe obtener el valor de las variables de entorno en su sistema.
$ echo $USER
devconnected
Por otro lado, las variables de shell son variables declaradas dentro del contexto de una instancia de shell y no se comparten con otros shells ni con procesos secundarios.
$ VARIABLE=devconnected
$ echo $VARIABLE
devconnected
En Linux, cuando ejecuta un script, lo más probable es que se ejecute en una subcapa.
Como consecuencia, no podrá tener las variables definidas en su primer shell ejecutándose en el script, simplemente no comparten el mismo entorno.
Esto es lo que resuelve el comando fuente.
El comando fuente se usa para evaluar el archivo pasado como argumento en el contexto de la ejecución actual. Abreviado como '.', el comando fuente se usa principalmente en el contexto de shells que se ejecutan en ventanas de terminal.
$ source filename [arguments]
Tenga en cuenta que cuando se proporcionan argumentos, se establecen como parámetros posicionales para el script especificado.
Nota :la documentación de origen se encuentra dentro de la documentación de bash. Para leerlo, escriba "man bash" y busque el párrafo de comando fuente.
Fuente para actualizar su entorno de shell actual (.bashrc)
Una de las principales razones para usar fuente es para actualizar el entorno de shell actual ejecutando el archivo bashrc.
Como recordatorio, .bashrc es un archivo de secuencia de comandos que se ejecuta cada vez que inicia una instancia de shell interactiva.
Se define por usuario y se encuentra en su directorio de inicio.
Digamos, por ejemplo, que desea agregar un nuevo alias a su entorno de shell.
Abra su archivo .bashrc y una nueva entrada.
alias ll='ls -l'
Ahora intente ejecutar su nuevo comando de alias directamente en la terminal.
Como puede ver, los cambios no se aplicaron directamente en su entorno actual.
Para que se apliquen los cambios, ejecute el comando fuente con el .bashrc archivo como argumento.
$ source ~/.bashrc
Una forma alternativa de hacerlo es ejecutarlo con la sintaxis de punto
$ . ~/.bashrc
Si intenta ejecutar su alias nuevamente, debería poder ejecutarlo
Fuente para ejecutar un script en el contexto actual
Como se explicó anteriormente, el comando fuente se puede usar para ejecutar un script en el contexto del entorno actual .
Para ilustrar este punto, definamos una variable de shell local en su entorno de shell actual.
$ VARIABLE=devconnected
Ahora, cree un nuevo script y pegue el siguiente contenido en él
#!/bin/bash
echo $VARIABLE
echo $LOGNAME
La variable VARIABLE representa la variable de shell local que creamos antes y la variable LOGNAME es una variable de entorno en su host.
Guarde su secuencia de comandos y otorgue permisos de ejecución a su secuencia de comandos recién creada (necesitará privilegios sudo para ejecutar este comando)
$ sudo chmod ugo+x <script>
Si intenta ejecutar el script, debería ver el siguiente resultado
Como puede ver, la variable local $VARIABLE no se imprimió en la salida estándar.
Esto se debe a que el script se ejecutó en una subcapa que tiene su propio conjunto de variables locales. Sin embargo, la variable de entorno se imprimió.
Para ejecutar este script en el contexto de nuestro shell actual, vamos a usar el comando fuente.
Como puede ver, en este caso, la variable $VARIABLE se imprimió correctamente en la salida estándar.
Fuente para importar una función de script
Una de las excelentes características del comando fuente es actualizar una función de secuencia de comandos, lo que permite una mayor reutilización de sus funciones de shell existentes.
Para ilustrar este punto, tomemos el ejemplo de una función que imprime el usuario actual en la salida estándar.
Cree un nuevo archivo de script y pegue el siguiente contenido dentro.
$ nano script
#!/bin/bash
# Print the current user to the standard output
printUser() {
echo $USER
}
Cree otro script y use la función fuente para importar su función printUser.
$ nano import-script
#!/bin/bash
source ./script
printUser
Asigne los permisos correctos al archivo que desea ejecutar. No necesita tener permisos de ejecución para el archivo que contiene la función que desea importar.
$ sudo chmod u+x import-script
$ ./import-script
Esto es lo que deberías ver en tu pantalla.
Como puede ver, la función se importó y ejecutó correctamente, imprimiendo el nombre del usuario actual de mi host.
Fuente para leer variables de un archivo
Otro gran uso del comando source en Linux es leer variables de un archivo.
Digamos, por ejemplo, que tiene un archivo con el siguiente contenido en un archivo llamado "variables “
NAME=devconnected
WEBSITE=devconnected.com
DESCRIPTION="best educational website online"
En otro archivo de script, podría usar esas variables usando el comando fuente para leer variables.
Cree un script y pegue el siguiente contenido en él.
$ nano variable-script
#!/bin/bash
source ./variables
echo $NAME is a website located at $WEBSITE and it is probably the $DESCRIPTION
Resolución de problemas
En algunos casos, puede encontrar errores al intentar obtener sus archivos con el comando fuente.
Aquí hay una lista de los errores comunes al intentar buscar archivos.
Comando fuente no encontrado en Linux
En algunos casos, puede encontrarse con este error
$ source: command not found
O usando sudo, también puede tener un error de comando fuente no encontrado.
$ sudo: source: command not found
La solución fácil aquí es ejecutar el comando como usuario raíz usando "su".
$ sudo -s
$ source .bashrc
Tenga en cuenta que también puede usar la "sintaxis de puntos", que es equivalente al comando fuente.
$ . .bashrc
Conclusión
En el tutorial de hoy, aprendió qué es el comando fuente en Linux y cómo puede usarlo para ejecutar scripts en el contexto del entorno actual.
También aprendió que se puede usar para importar funciones o variables desde un archivo simple a un archivo de secuencia de comandos.
Si desea más tutoriales relacionados con la administración del sistema Linux, tenemos una categoría completa dedicada a ello en devconnected. Haga clic en la imagen de abajo para leerlos.