Comando integrado de fuente Bash

comando de fuente

En Tipo Unix sistemas operativos, fuente es un comando incorporado del Intento cáscara. Toma un Nombre del archivo , y ejecuta los comandos en ese archivo como si se hubieran escrito en el línea de comando .

Descripción

fuente lee y ejecuta comandos desde un archivo Nombre del archivo en el shell actual. Si Nombre del archivo no contiene una barra, directorios en CAMINO son buscados Nombre del archivo .

Cuando bash no se ejecuta en modo POSIX (por ejemplo, set -o posix ), la directorio actual se busca si Nombre del archivo no se encuentra en $ RUTA .

Si se proporciona algún argumento, se convierte en el parámetros posicionales Cuándo Nombre del archivo es ejecutado.

Utilizando fuente ejecutar los comandos en un archivo no es lo mismo que ejecutar un texto . Por un lado, el archivo no necesita ser ejecutable (por ejemplo, con chmod u + x ). Por otro, los comandos se ejecutarán en el shell actual. ambiente ; por ejemplo, cualquier variables set conservará su valor después de que la fuente termine de ejecutarse.

Un uso común de fuente es cargar y ejecutar el contenido de un archivo de configuración, como $ INICIO / .bashrc . La .bashrc El archivo a menudo se ejecuta automáticamente cuando crea un nuevo shell bash. Si realiza cambios en este archivo y desea aplicarlos a su sesión de bash actual, puede hacerlo con fuente . Ver el ejemplos debajo.

El comando incorporado . (un solo período ) realiza la misma acción que el fuente mando. Los dos se pueden usar indistintamente.

Sintaxis

|_+_|

También puede usar un solo punto (punto), que es lo mismo que la palabra fuente . Por ejemplo:

|_+_|

Estado de salida

El estado de salida de fuente es el estado de salida del último comando ejecutado, o cero si no se ejecuta ningún comando. Si Nombre del archivo no se encuentra o no se puede leer, el estado de devolución es distinto de cero.

Ejemplos de

|_+_|

Leer el archivo .bashrc en el directorio de inicio y ejecute cualquier comando en ese archivo.

|_+_|

Igual que el comando anterior.

Los siguientes ejemplos ilustrarán cómo fuente se ejecuta en el contexto de shell actual:

|_+_|

Utilizar el printf comando incorporado para imprimir texto, redirigiéndolo a un nuevo archivo llamado mi fuente . La printf se usa el comando en lugar de echo porque es una forma más confiable de imprimir personajes escapados , como orte , que se interpreta como un nueva línea . La totalidad cuerda está entre comillas simples ( ' ), en lugar de comillas dobles, de modo que bash no expanda el signo de exclamación como un expansión de la historia .

Verificar el texto de mi fuente utilizando gato :

|_+_| |_+_|

Estos comandos establecen la variable myvar y luego repita el valor. Fabricar mi fuente ejecutable:

|_+_|

Luego, ejecute el script. A menos que el directorio actual esté en su CAMINO Variable ambiental , debe especificar el nombre de la ruta ./ (el directorio actual) como parte del comando:

|_+_| |_+_|

La secuencia de comandos mi fuente se ejecuta en su propio entorno de shell, donde la variable myvar tiene un valor (' ¡Hola Mundo! '). Sin embargo, una vez finalizado el guión, myvar ya no tiene valor. Puede verificar esto ejecutando echo $ myvar en el indicador de bash:

|_+_|

(Solo se imprime una nueva línea, porque myvar no tiene valor.)

Ahora, en lugar de ejecutar el script directamente, ejecútelo con fuente . El valor de myvar se repite, como antes:

|_+_| |_+_|

Esta vez, sin embargo, myvar todavía tiene un valor en el entorno actual:

|_+_| |_+_|

Como puede ver, la ejecución de un script crea un entorno de shell aislado, que se destruye cuando termina el script. En contraste, usando fuente permite que el contenido del script afecte al entorno actual. Ser consciente de la diferencia le ayudará a comprender mejor el comportamiento de sus scripts y cómo pueden afectar el entorno de otros scripts y programas que ejecuta en bash.

ejecutivo - Destruya el shell actual y reemplácelo con un nuevo proceso.