
UNIX: La referencia completa, segunda edición por Kenneth H. Rosen et al.
Puede iniciar otro shell después de iniciar sesión utilizando el nombre del shell como comando; por ejemplo, para iniciar el shell Korn, puede escribir ksh en el símbolo del sistema. Este tipo de shell no es un shell de inicio de sesión y no es necesario volver a iniciar sesión para usarlo, pero sigue siendo un shell interactivo, lo que significa que interactúa con el shell escribiendo comandos (en lugar de usar el shell para ejecutar un script, como se analiza en el Capítulo 20). Las instancias del shell que se ejecutan en una ventana de terminal cuando se utiliza una interfaz gráfica también son shells interactivos sin inicio de sesión. Cuando inicia un shell sin inicio de sesión, no lee su archivo .profile, .bash_profile o .login (o su archivo .logout), pero aún así leerá el segundo archivo de configuración del shell (como .bashrc). Esto significa que puede probar los cambios en su .bashrc iniciando otra instancia del shell, pero si está probando cambios en su .profile o .login, debe cerrar sesión y luego volver a iniciarla para ver los resultados.
Estaba leyendo las líneas anteriores y no entiendo qué significa shell interactivo. ¿Es cierto que .profile no se lee si estoy usando la terminal?
Además, ¿qué significa cuando dices que bourne no es un shell interactivo mientras que bash/csh es un shell interactivo?
Respuesta1
Un shell interactivo es simplemente cualquier proceso de shell que se utiliza para escribir comandos y obtener resultados de esos comandos. Es decir, un caparazón con el que interactúas.
Por lo tanto, su shell de inicio de sesión es interactivo, al igual que cualquier otro shell que inicie manualmente, como se describe en el extracto que citó en su pregunta. Por el contrario, cuando ejecuta un script de shell, se inicia un shell no interactivo que ejecuta los comandos del script y luego se cierra cuando finaliza el script.
El shell Bourne se puede utilizar como un shell interactivo, al igual que bash
o tcsh
. De hecho, muchos sistemas, como FreeBSD, lo utilizan sh
como shell de usuario predeterminado. Los shells modernos como bash
, zsh
, tcsh
, etc. tienen muchas características que el shell Bourne no tiene, lo que los hace más cómodos y convenientes para el uso interactivo (historial de comandos, finalización, etc.).
Los shells interactivos sin inicio de sesión (es decir, los shells que se inician manualmente desde otro shell o abriendo una ventana de terminal) no leen sus archivos .login
o .profile
. Estos solo son leídos y ejecutados por shells de inicio de sesión (shells iniciados por el login
proceso del sistema o por su administrador de pantalla X), por lo que los comandos y configuraciones que contienen solo se aplican una vez, al comienzo de su sesión de inicio de sesión. Entonces, cuando inicia una terminal, el shell que genera no lee sus archivos de inicio de sesión ( .login
para shells estilo c, .profile
para shells estilo bourne), pero sí lee los archivos .cshrc
, .bashrc
etc.