
¿Cómo puedo encontrar el archivo en el que está definida una variable bash allí?
Supongamos que el echo
comando 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 bash
pá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
--rcfile
opción. - lo que se especifique con la
BASH_ENV
variable de entorno. - lo que se especifique con la
ENV
variable 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 ~/.bashrc
y eso ~/.bash_profile
lo obtiene al final.
De esa manera, ~/.bash_profile
contiene solo lo que necesito en los shells de inicio de sesión y ~/.bashrc
contiene 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 bash
configuraciones de solo.