¿Existe un archivo Bash que siempre se obtendrá en modo interactivo, sin importar si es de inicio de sesión o no?


10

Hasta donde yo sé, los shells interactivos pueden iniciar sesión o no iniciar sesión, y los archivos de inicio para ellos son diferentes.

  • Si intérprete interactivo de ingreso + → /etc/profilea continuación, la primera lectura de ~/.bash_profile, ~/.bash_loginy~/.profile
  • Si es interactivo + shell sin inicio de sesión → /etc/bash.bashrcentonces~/.bashrc

Quiero establecer algunas variables cada vez que uso un shell interactivo, independientemente de si es un shell de inicio de sesión o no.



1
@strugee No, esta pregunta no se trata de variables de entorno.
Gilles 'SO- deja de ser malvado'

@Gilles sí, pero su respuesta se aplica igualmente bien.
Strugee

1
@strugee Eso es porque fui más allá de la pregunta inmediata y toqué un tema periférico. Un párrafo en una respuesta no hace un duplicado. Las preguntas son solo duplicados si tienen respuestas sustancialmente idénticas, no si una respuesta contiene suficiente material para responder a la segunda.
Gilles 'SO- deja de ser malvado'

Respuestas:


10

No, no hay Sí, este es un defecto de diseño.

Use el siguiente contenido en ~/.bash_profile:

if [ -e ~/.profile ]; then . ~/.profile; fi
if [[ -e ~/.bashrc && $- = *i* ]]; then . ~/.bashrc; fi

Tenga en cuenta que bash tiene una peculiaridad aún más extraña: cuando se trata de un shell de inicio de sesión no interactivo y el proceso principal es rshdor sshd, bash sources ~/.bashrc(pero no ~/.bash_profileo ~/.profile). Por lo tanto, es posible que desee poner esto en la parte superior de su .bashrc:

if [[ $- != *i* ]]; then return; fi

Consulte también ¿ Diferencia entre .bashrc y .bash_profile y Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión?


Esas peculiaridades son por razones de seguridad (no cargue archivos inesperados cuando se ejecuta en una configuración sensible a la seguridad).
vonbrand

2
@vonbrand Er, ¿qué? No, estas peculiaridades no tienen absolutamente nada que ver con la seguridad. No hay "archivos inesperados" involucrados (excepto que la carga .bashrcen una configuración no interactiva realmente puede contar como inesperada), ni ninguna verificación de ningún contexto sensible a la seguridad.
Gilles 'SO- deja de ser malvado'

¿Tiene este un método para evitar bucles?
Braiam

1
@Braiam ¿Qué bucles?
Gilles 'SO- deja de ser malvado'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.