scripts script resueltos programacion pasar parametros español ejercicios ejemplos comandos comando bash shell interactive-shell

bash - script - ¿Cuáles son las diferencias entre un shell de inicio de sesión y un shell interactivo?



scripts bash ejemplos (2)

¿Qué es un login shell y interactive shell , y qué es un .bash_profile y .bashrc ?


Un shell interactivo es uno iniciado sin argumentos no opcionales, a menos que se especifique -s, sin especificar la opción -c, y cuya entrada y salida de error estén ambos conectados a terminales (según lo determinado por isatty (3)), o uno haya comenzado con la opción -i.

Un shell interactivo generalmente lee y escribe en la terminal de un usuario.

[ manual de gnu bash ]

Un shell de inicio de sesión es un shell donde inicia sesión. Puede reconocer un shell de inicio de sesión desde una lista ps -f , tendrá un guión al comienzo del nombre del programa, por ejemplo:

root 3561 3553 0 09:38 pts/0 00:00:00 -bash qa 7327 3432 0 10:46 pts/1 00:00:00 -bash

Un shell interactivo es uno que lee comandos de su entrada estándar, generalmente un terminal.

Por ejemplo, si inicia sesión en bash utilizando un emulador de xterm o terminal como putty , la sesión es tanto un shell de inicio de sesión como uno interactivo. Si luego escribe bash , ingresa un shell interactivo, pero no es un shell de inicio de sesión.

Si se ejecuta un script de shell (un archivo que contiene comandos de shell), entonces no es un shell de inicio de sesión ni uno interactivo.

Los archivos de inicio son altamente adaptables en bash:

Cuando se invoca un shell bash de inicio de sesión, entonces /etc/profile se origina (se ejecuta en el entorno actual). Después de eso, se verifican tres archivos para saber si existen. Los controles para estos archivos se hacen en este orden:

si existe /etc/profile , source (run) it
si ~/.bash_profile exists , fuente (ejecutar)
si ~/.bash_login exists , fuente (ejecutar)
si ~/.profile exists , fuente (ejecutar)

Una vez que se encuentra una coincidencia, los otros archivos se ignoran, incluso si existen. El /etc/bashrc puede ser utilizado por los archivos ~/.bash_profile y ~/.bashrc . Eso significaría que el /etc/bashrc se origina en todas las invocaciones interactivas de bash, ya sea un inicio de sesión o un shell que no sea de inicio de sesión.

Por lo tanto, el archivo .bashrc también se ejecuta cada vez que solicita un nuevo shell interactivo . Esto no incluye un script de shell. Normalmente las variables, alias o funciones se colocan en este archivo.

Los scripts de shell Bash leen un archivo diferente si se les instruye adecuadamente. Si el usuario define (generalmente en su propio archivo BASH_ENV ) una variable BASH_ENV que contiene un nombre de archivo, los scripts leerán esto. Si esta variable no está configurada (y exportada), los scripts bash no leerán ningún archivo de inicio.


Como probablemente sepa qué es un "shell" y lo está usando, su pregunta solo se centra en la diferencia entre el shell de inicio de sesión y todo lo demás ...

Un shell de inicio de sesión solo difiere de cualquier otro shell por el hecho de que uno o más scripts (recursos) de configuración inicial se cargan en el inicio, normalmente nombrados con "perfil" en su nombre. allí se definen configuraciones básicas que se derivan para las conchas abiertas posteriormente (por lo que solo necesitan definirse una vez).