Remove toda a variável de ambiente e carrega o rcfile

1

Eu preciso executar vários conjuntos de ambientes. Para isso, tenho dois conjuntos de arquivos bashrc, bashrc_a e bashrc_b . Na inicialização, fiz bashrc_a em execução fazendo .bashrc como

source bashrc_a

Do bashrc_a environment, preciso alternar para bashrc_b , mas não quero envolver nenhuma variável de ambiente de bashrc_a permanecer no ambiente bashrc_b . Para isso, eu tentei

env -i bash --rcfile bashrc_b

Mas o problema é que, neste caso, perco all variáveis de ambiente, não apenas as de bashrc_a . Não tenho HOME , não tenho PATH e assim por diante.

Outra coisa que tentei é

env -i bash --login --rcfile bashrc_b

Mas se eu fizer isso, o shell de login procurará ~/.bashrc , depois procurará o arquivo bashrc_a e, como TERM foi excluído de env -i , isso não ajudou.

Então, minha pergunta é: como posso descarregar bashrc_a e carregar bashrc_b ?

    
por Hojin Cho 16.09.2017 / 15:58

1 resposta

0

Parece que, do que você descreve, como você não realmente quer carregar o ambiente bashrc_b de bashrc_a .

Assumindo que você não use bashrc_a ou bashrc_b de .bashrc ou .bash_profile .

  1. Inicie um shell bash normalmente.
  2. Inicie o ambiente bashrc_a com bash --rcfile bashrc_a .
  3. Se você quiser mudar para o ambiente bashrc_b
    1. primeiro exit e, em seguida,
    2. bash --rcfile bashrc_b

Se você quiser manter o ambiente bashrc_a , basta abrir outro terminal e fazer bash --rcfile bashrc_b .

A outra alternativa seria escrever um "unload" rc -file correspondente para cada um dos ambientes. Esses dois arquivos não configurariam ou reconfigurariam o ambiente de forma que o mesmo fizesse o que o arquivo bashrc_x correspondente tivesse feito. Você pode então source bashrc_a , fazer seu trabalho, source unbashrc_a , seguido por source bashrc_b (ou ter bashrc_b source unbashrc_a diretamente).

Isso pode ser difícil de escrever e manter atualizado.

    
por 16.09.2017 / 17:14