it-swarm-es.com

¿Cuál es la diferencia entre un bash shell 'Login' y un 'Interactive'

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

EDITAR: Esta es una wiki comunitaria, por lo que quizás, en lugar de votar para cerrar, podría proporcionar ejemplos de qué situaciones requieren qué tipo de $ Shell

Guiones de inicio

Cuando se inicia Bash, ejecuta los comandos en una variedad de scripts diferentes.

Cuando se invoca Bash como un Shell de inicio de sesión interactivo, primero lee y ejecuta comandos del 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 del primero que existe y es legible.

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

Cuando se inicia un Shell interactivo que no es un Shell de inicio de sesión, Bash lee y ejecuta comandos desde ~/.bashrc, si ese archivo existe. Esto puede inhibirse usando la opción --norc. La opción de archivo --rcfile obligará a Bash a leer y ejecutar comandos desde el archivo en lugar de ~/.bashrc.

50
Gareth

En sus archivos de perfil de Shell de inicio de sesión, puede configurar algunas cosas que usará durante su sesión, y que solo deben hacerse una vez. Algunas ideas:

  • cree un archivo temporal que contenga la dirección IP desde la que se conectó, luego puede 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, escriban (1) mensajes informándoles de su inicio de sesión.

En los archivos de Shell sin inicio de sesión (.bashrc) debes configurar tu Shell:

  • Aviso de lujo
  • 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 variables de agente ssh guardadas en .bash_profile

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

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