Pregunta ¿Cuál es la diferencia entre un 'Inicio de sesión' y un shell de bash 'Interactivo'


¿Cuál es la diferencia entre un 'Inicio de sesión' y un shell bash 'Interactivo'? He citado Wikipedia a continuación, pero ¿alguien puede dar una mejor respuesta?

EDITAR: Esta es una wiki de la comunidad, así que tal vez en lugar de votar para cerrar puede proporcionar ejemplos de qué situaciones requieren qué tipo de $ SHELL

Guiones de inicio

Cuando comienza Bash, ejecuta el   comandos en una variedad de diferentes   guiones.

Cuando Bash se invoca como un interactivo   shell de inicio de sesión, primero lee y   ejecuta comandos desde el archivo   / etc / profile, si ese archivo existe.   Después de leer ese archivo, busca   ~ / .bash_profile, ~ / .bash_login, y   ~ / .profile, en ese orden, y lee   y ejecuta comandos desde la primera   uno que existe y es legible.

Cuando sale un shell de inicio de sesión, Bash lee   y ejecuta comandos desde el archivo   ~ / .bash_logout, si existe.

Cuando un shell interactivo que no es   se inicia un shell de inicio de sesión, Bash lee   y ejecuta comandos desde ~ / .bashrc,   si ese archivo existe Esto podría ser   inhibido mediante el uso de la opción --norc.   La opción de archivo --rcfile forzará   Bash para leer y ejecutar comandos desde   archivo en lugar de ~ / .bashrc.


46


origen


He editado la pregunta para que se ajuste más a las reglas del sitio a medias. Creo que nunca entenderé el deseo de eliminar información útil ... - Gareth
¿Por qué la gente está rechazando esta pregunta? ¿Me parece perfectamente legítimo? - duffbeer703
Ugh, toma la respuesta de tu pregunta y publícala como respuesta. Está bien responder a su propia pregunta. - derobert
Es una pregunta muy válida ya que la distinción es confusa. Tenga en cuenta, por ejemplo, que cuando inicia sesión en un entorno gráfico a través de xdm y ejecuta xterm, obtiene un shell interactivo y los archivos de inicio del shell de inicio de sesión no se ejecutan. - pjc50


Respuestas:


En los archivos de perfil de su shell de inicio de sesión puede configurar algunas cosas que usará durante su sesión y que solo debe hacer una vez. Algunas ideas:

  • cree un archivo temporal que contenga la dirección IP desde la que se conectó; más adelante, podrá incluirlo en algunos scripts que configuran las reglas del firewall.
  • ejecute ssh-agent, solicite sus claves SSH y almacene las variables de entorno del agente SSH en un archivo.
  • si esa es una máquina limitada, y sus compañeros de trabajo desean estar al tanto de los inicios de sesión de los demás, escriba (1) mensajes informándoles de su inicio de sesión.

En los archivos de un shell que no son de inicio de sesión (.bashrc) debes configurar tu shell:

  • Fancy prompt
  • establecer alias
  • establecer opciones de historial
  • definir funciones de shell personalizadas
  • exportar variables de entorno, (tal vez PAGER, EDITOR si la configuración de todo el sistema apesta)
  • cargar las variables ssh-agent guardadas en .bash_profile

Por lo general, incluirías .bashrc desde .bash_profile con lo siguiente. Luego el shell de inicio de sesión obtiene todas sus personalizaciones, y .bash_profile El archivo no tiene que duplicar cosas que ya están en .bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc

16



¿Un shell de inicio de sesión es el primero que comienza cuando estás actualizado en la máquina? Todos los demás shells que abres después de eso pueden o no ser interactivos. ¿Un shell que se está ejecutando desde cron? No parece interactivo, pero ¿es login? ¿Qué pasa si no estás en la máquina? Esas son las preguntas que quedan sin respuesta. - François Beausoleil
Ahora, esa es una respuesta que puedo entender: linuxquestions.org/questions/linux-general-1/… - François Beausoleil