Respuestas:
Su terminal ejecuta un shell (muy probablemente bash
), que es el que solicita sus comandos y los ejecuta.
Además de este modo interactivo, también puede usar su shell para ejecutar comandos desde un archivo. Para ejecutar los comandos en su archivo, puede llamar directamente al shell bash script
o puede iniciar su archivo con un "shebang" #!/bin/bash
y hacerlo ejecutable ( chmod +x script
). Luego puede tratar el script como un binario y ejecutarlo, por ejemplo, como ./script
o ponerlo en un lugar donde su shell lo esté buscando. ( echo $PATH
)
Lo más probable es que tanto su shell interactivo como el shell utilizado para ejecutar sean bash
. Desde la perspectiva de un bash de "primer día de aprendizaje de Linux", funciona exactamente igual en ambos modos. - Mucho más tarde, podrías tropezar con pequeñas diferencias. Si realmente quiere saber en detalle, le sugiero que lea man bash
y busque lugares que mencionen "interactivo". (Puede buscar una página de manual presionando /
).
Una cosa importante a tener en cuenta es que el script se ejecuta como un nuevo proceso. Esto significa especialmente que las variables establecidas en el script no son visibles en el shell de llamada.
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
Sin la exportación a
ni siquiera es visible para el script interno.
En general, la respuesta sería "no", los comandos en shell son los mismos en scripts, en sintaxis y semántica.
Pero hay un montón de pequeños matices relacionados con la configuración del entorno (qué variables se usan y para qué se configuran).
El intérprete interactivo de elección para Linux es fiesta, pero scripting menudo utiliza otros intérpretes ( sh
que es un precursor de bash
, ksh
, que está a la par con bash), así que hay que tener en cuenta lo que la cáscara se utiliza (nombre de la shell actual s tradicionalmente se mantiene en variable SHELL
, intente escribir echo $SHELL
).
Puede haber diferencias en la configuración del mismo intérprete para la sesión interactiva y para la ejecución del script.
No. Un script es una lista de comandos que puede escribir en la terminal.
Puede pegar la totalidad de un script en la terminal, y el resultado será el mismo que ejecutarlo.
Inversamente, puede "guardar" sus comandos de terminal dentro de un archivo y convertirlo en un script reutilizable y compartirlo con su familia y amigos.
source script_file
. que editará ENV vars en el contexto actual. mientras ejecuta el script, ya ./script_file
que no modificará el ENV, a menos que export
se use explícitamente.
export
esto, no es posible que un script modifique ninguna variable del shell de llamada. Lo mismo ocurre con cosas como PWD, alias definidos, funciones y cosas así. Se pueden cambiar solo de forma interactiva o buscando un archivo. Pero sí, eso probablemente no sea algo con lo que alguien tropezará el primer día. :)