Shell y subshell

Podemos abrir una nueva shell simplemente ejecutando el fichero binario que contiene la shell.
También, cuando ejecutamos un script se abre una nueva shell que es la encargada de ir interpretando las diferentes órdenes y de mantener el valor de las variables definidas. Esta subshell tiene como tiempo de vida el tiempo de ejecución del script. Además esta subshell hereda el valor de parte de las variables de entorno, pero en su propio espacio de memoria, por lo que las modificaciones de cualquier variable de la nueva shell no tendrá repercusión en la shell padre.

Cerrar una shell

Para cerrar una shell usamos la orden exit. Esta orden termina la ejecución de la shell y vuelve a la shell padre. Si ejecutamos la orden exit sobre la shell inicial que abrimos al entrar al sistema (llamada login shell) entonces terminamos la sesión de trabajo.

Variables exportadas

En el apartado anterior, veíamos que una subshell hereda parte de las variables definidas en la la shell padre. Para que las shell hijas de una dterminada shell hereden una variable es necesario indicarlo explícitamente con la orden export. Por ejemplo, si queremos que el valor de la variable EDITOR pase a las subshell que sean hijas de la shell activa, tendremos que poner
$ export EDITOR
En la shell bash, podemos realizar en una sola operación la asignación de una valor y exportarla, por ejemplo
$ export EDITOR=vi
No todas las shell permiten esta operación, en algunas hay que hacerlo en dos operaciones:
$ export 
EDITOR=vi

Ejemplos:

Asignar la palabra contenido a una variable llamada AA
$ AA=contenido
Mostrar el contenido de la variable en pantalla.
$ echo $AA
Abrir una shell hija de la anterior.
$ /bin/bash
Mostrar de nuevo el contenido de la variable
$ echo $AA
Salir de la subshell activa
$ exit
Mostrar de nuevo el contenido de la variable
$ echo $AA
Exportar la variable
$ export AA
Abrir una shell hija de la anterior.
$ /bin/bash
Mostrar de nuevo el contenido de la variable
$ echo $AA