¿Cuál es la diferencia entre el abastecimiento y la ejecución de un script de shell?

¿Cuál es la diferencia entre el abastecimiento y la ejecución de un script de shell?
En los sistemas operativos similares a UNIX, un script de shell es un archivo que contiene una serie de comandos que son interpretados y ejecutados por el programa Shell. Cuando se trata de ejecutar un script de shell, hay dos formas principales de hacerlo: abastecimiento y ejecución. Si bien pueden parecer similares, tienen diferentes efectos en la sesión de shell actual y las variables de entorno, este artículo elaborará las diferencias entre los dos métodos.

¿Cuál es la diferencia entre el abastecimiento y la ejecución de un script de shell?

Para comprender la diferencia entre ambas formas en que uno debe tener un conocimiento sólido para usar ambos métodos, primero tengamos su definición básica una por una:

Abastecer un script de shell

Abastecer un script de shell es una forma de ejecutar un script en el entorno de shell actual. Todos los comandos de un script se ejecutan si se escriben directamente en la interfaz de la línea de comandos y la obtención de un script hace lo mismo. Debido a esto, proporciona una opción al script para modificar las variables de entorno y establecer las opciones de shell en el shell actual.

Para una ilustración adicional, hice un archivo de prueba para el script bash y luego lo ejecuté, aquí está el código para el archivo bash que creé:

# Bashfile.mierda
Exportar my_info = "Hola Linuxhint"

Aquí he creado una variable ambiental que es my_info que tiene Hola Linuxhint almacenado en él y luego lo ejecutó usando la sintaxis dada:

.

Desde que he creado un archivo llamado BashFile.SH Entonces usé la sintaxis anterior como esta:

. bashilla.mierda

Una vez que se ejecuta el archivo, he llamado a la variable ambiental para ver lo que se almacena y devuelve el valor almacenado en él, lo que muestra claramente que los cambios en las variables de entorno persisten en el shell actual:

Ejecutando un script de shell

Ejecutar un script de shell es una forma de ejecutar un script en un shell separado. Cuando se ejecuta un script, se crea un nuevo shell, el script se ejecuta en ese shell y el shell termina cuando el script está terminado. Esto muestra que cualquier cambio realizado en las variables de entorno o opciones de shell en el script no persistirá después de que termine el script. Para una ilustración adicional, hice un archivo de prueba para el script bash y luego lo ejecuté, aquí está el código para el archivo bash que creé:

# Bashfile.mierda
Exportar my_info = "Hola Linuxhint"

Aquí acabo de crear una variable ambiental que es my_info que tiene Hola Linuxhint almacenado en él y luego lo ejecutó usando la sintaxis dada:

./

Desde que he creado un archivo llamado BashFile.SH Entonces usé la sintaxis anterior como esta:

./Bashfile.mierda

Una vez que se ejecuta el archivo, he llamado a la variable de entorno para ver lo que se almacena en él y devuelve un espacio en blanco que muestra claramente que los cambios realizados en las variables de entorno o las opciones de shell en el script no persistirán después de que el script esté terminado:

Para ilustrar aún más la diferencia, la tabla que se indica a continuación que identifica algunas de las diferencias clave entre el abastecimiento y la ejecución de un archivo:

Factores Ejecutando un script de shell Abastecer un script de shell
Alias ​​y funciones Alias ​​y funciones solo persisten en el shell del guión. Los alias y las funciones persisten en el shell actual.
Ambiente Los cambios en las variables de entorno solo persisten en el shell del script. Los cambios en las variables de entorno persisten en el shell actual.
Sintaxis ./nombre de script.SH o BASH Script-Name.mierda . nombre de script.sh o nombre de script de origen.mierda
Utilidad principal Ejecute un guión autónomo sin afectar el shell actual. Configurar las variables o alias de entorno para el caparazón

Conclusión

Hay dos formas de ejecutar el script bash, uno es obtenerlo y el otro es ejecutarlo, las dos formas tienen su propio significado. La principal diferencia entre los dos es que la obtención del archivo de script mantiene los cambios en las variables de entorno en el shell actual, mientras que la ejecución del script mantendrá los cambios.a