Onde as variáveis ​​​​bash são definidas?

Onde as variáveis ​​​​bash são definidas?

Como posso encontrar o arquivo onde uma variável bash está definida lá?

Suponha que o echocomando 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 bashpá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 --rcfileopção.
  • tudo o que for especificado com a BASH_ENVvariável de ambiente.
  • tudo o que for especificado com a ENVvariá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 ~/.bashrce de que ~/.bash_profileo recebo no final.

Dessa forma, ~/.bash_profilearmazena apenas o que preciso nos shells de login e ~/.bashrcarmazena 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 bashconfigurações somente.

informação relacionada