¿Dónde se definen las variables de bash?

¿Dónde se definen las variables de bash?

¿Cómo puedo encontrar el archivo en el que está definida una variable bash allí?

Supongamos que el echocomando muestra

$ echo $DB_ROOT
/home/mahmood/db-4.0

Ahora bien, ¿cómo puedo encontrar el archivo que ahí tiene definida esta variable? He de decir que no lo he definido en ~/.bashrc.

Respuesta1

Hay una gran cantidad de lugares dondepodríadefinirse.

Para obtener una explicación completa, debes consultar la bashpágina de manual, en INVOCATION, pero debo advertirte que probablemente te dará dolor de cabeza antes de que lo entiendas todo :-)

Dependiendo de cómo se invoque el shell y qué archivos existan, puede ser uno o más de:

  • /etc/profile.
  • /etc/bash.bashrc
  • ~/.bash_profile.
  • ~/.bash_login.
  • ~/.profile.
  • ~/.bashrc.
  • lo que se especifica con la --rcfileopción.
  • lo que se especifique con la BASH_ENVvariable de entorno.
  • lo que se especifique con la ENVvariable de entorno.
  • cualquier archivo llamado desde los archivos anteriores.

Por si sirve de algo, normalmente me aseguro de tener un ~/.bash_profile(ya que esa es la prioridad más alta del conjunto {~/.bash_profile, ~/.bash_login, ~/.profile}; solo procesará elprimeroque encuentra en ese grupo).

También me aseguro de tenerlo ~/.bashrcy eso ~/.bash_profilelo obtiene al final.

De esa manera, ~/.bash_profilecontiene solo lo que necesito en los shells de inicio de sesión y ~/.bashrccontiene lo que quiero encadacaparazón. Sólo tienes que asegurarte de que este último no contenga ningún comando "acumulativo" (como agregar algo al final de la ruta).

Hay otras formas de configurarlo, especialmente si estás usando diferentes shells y tienes que compartir perfiles entre ellos, pero el esquema anterior es el más fácil que he encontrado en bashconfiguraciones de solo.

información relacionada