Onde as variáveis bash são definidas?

4

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

Suponha que o comando echo mostre

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

Agora, como posso encontrar o arquivo que esta variável foi definida lá? Eu tenho que dizer que não defini em ~/.bashrc .

    
por mahmood 08.02.2013 / 08:47

1 resposta

8

Há um grande número de lugares onde poderia ser definido.

Para uma explicação completa, você precisa olhar a bash manpage, em INVOCATION , mas tenho que avisá-lo que provavelmente lhe dará dor de cabeça antes de entender tudo: -)

Dependendo de como o shell é invocado e 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 opção --rcfile .
  • o que for especificado com a variável de ambiente BASH_ENV .
  • o que for especificado com a variável de ambiente ENV .
  • qualquer arquivo chamado dos arquivos anteriores.

Por que vale a pena, eu geralmente me certifico de ter um ~/.bash_profile (já que essa é a maior prioridade do conjunto {~/.bash_profile, ~/.bash_login, ~/.profile} - ele só processará o primeiro que encontrar naquele grupo ).

Eu também me certifico de que eu tenha ~/.bashrc e que ~/.bash_profile as forneça no final.

Dessa forma, ~/.bash_profile contém apenas as coisas que eu preciso em shells de login e ~/.bashrc contém as coisas que eu quero em todos os shell. Você só precisa ter certeza de que o ú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 tiver que compartilhar perfis entre eles, mas o esquema acima é o mais fácil que encontrei nas configurações bash -only.

    
por 08.02.2013 / 08:53

Tags