¿Qué quieres decir con shell interactivo?

25

UNIX: The Complete Reference, Second Edition de 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 tiene que iniciar sesión nuevamente 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 discutió en el Capítulo 20). Las instancias del shell que se ejecutan en una ventana de terminal cuando está utilizando 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 seguirá leyendo el segundo archivo de configuración de shell (como .bashrc). Esto significa que puede probar los cambios en su.

Estaba pasando por las líneas anteriores y no entiendo lo que significa un 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?

munish
fuente

Respuestas:

27

Un intérprete de comandos interactivo es simplemente cualquier proceso de intérprete de comandos que utiliza para escribir comandos y obtener resultados de esos comandos. Es decir, un shell 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 en el script y luego se cierra cuando finaliza el script.

El shell Bourne se puede utilizar como un shell interactivo, como basho tcsh. De hecho, muchos sistemas, como FreeBSD, se utilizan shcomo shell de usuario predeterminado. Conchas modernas, como bash, zsh, tcsh, etc tienen muchas características que shell Bourne no tiene, que los hacen más cómodo y conveniente para el uso interactivo (historial de comandos, terminación, etc.).

Conchas interactivo de no ingreso (es decir, los depósitos se inicia manualmente desde otro shell o abriendo una ventana de terminal) no leen sus .logino .profilearchivos. Estos solo son leídos y ejecutados por shells de inicio de sesión (shells iniciados por el loginproceso 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 un terminal, el shell que genera para usted no lee sus archivos de inicio de sesión ( .loginpara shells de estilo c, .profilepara shells de estilo bourne), pero sí lee los archivos .cshrc, .bashrcetc.

D_Bye
fuente
Es posible ejecutar un shell como un shell de inicio de sesión no interactivo.
jw013
Es cierto, pero potencialmente confuso!
D_Bye
ksh también es un shell moderno :-) Vea www2.research.att.com/sw/download y use el menú en el margen izquierdo para navegar a AST-> ksh-> descripción general. Un nuevo lanzamiento sale varias veces al año de David Korn y Glen Fowler. Buena suerte a todos.
shellter
1
@shellter: sí, de hecho. ¡Pero no es uno que haya usado nunca, y tuve que dejar de enumerar proyectiles en alguna parte! ;-)
D_Bye
Has dicho The Bourne shell can be used as an interactive shell, just like bash or tcsh. ¿No es Bourne el mismo shell que bash?
Mr.Web