
Como posso encontrar o arquivo onde uma variável bash está definida lá?
Suponha que o echo
comando mostre
$ echo $DB_ROOT
/home/mahmood/db-4.0
Agora, como posso encontrar o arquivo que essa variável foi definida lá? Devo dizer que não o defini em ~/.bashrc
.
Responder1
Há um grande número de lugares ondepoderiaser definida.
Para uma explicação completa, você precisa dar uma olhada na bash
página de manual, em INVOCATION
, mas devo avisar que provavelmente você terá dor de cabeça antes de entender tudo :-)
Dependendo de como o shell é invocado e de quais arquivos existem, pode ser um ou mais dos seguintes:
/etc/profile
./etc/bash.bashrc
~/.bash_profile
.~/.bash_login
.~/.profile
.~/.bashrc
.- o que for especificado com a
--rcfile
opção. - tudo o que for especificado com a
BASH_ENV
variável de ambiente. - tudo o que for especificado com a
ENV
variável de ambiente. - qualquer arquivo chamado dos arquivos anteriores.
Pelo que vale, geralmente certifico-me de ter um ~/.bash_profile
(já que essa é a prioridade mais alta do conjunto {~/.bash_profile, ~/.bash_login, ~/.profile}
- ele processará apenas oprimeiroque encontra nesse grupo).
Também me certifico de que o tenho ~/.bashrc
e de que ~/.bash_profile
o recebo no final.
Dessa forma, ~/.bash_profile
armazena apenas o que preciso nos shells de login e ~/.bashrc
armazena o que desejotodoconcha. Você apenas precisa ter certeza de que este último não contém nenhum comando "cumulativo" (como adicionar algo ao final do caminho).
Existem outras maneiras de configurá-lo, especialmente se você estiver usando shells diferentes e precisar compartilhar perfis entre eles, mas o esquema acima é o mais fácil que encontrei em bash
configurações somente.