Como evitar criar um loop infinito ao chamar bash dentro de bashrc com BASH_ENV set?

0

Dentro de ~/.bashrc , executo um script bash (um script com #!/usr/bin/env bash no topo). Descobri que quando BASH_ENV está definido como ~/.bashrc , isso configura um loop infinito quando um comando bash é executado. Qual é a melhor maneira de evitar isso?

Aqui está o meu entendimento do que acontece (consulte também o manual do bash na inicialização arquivos ):

  1. bash executado não interativamente resolve BASH_ENV para ~/.bashrc .
  2. bash começa a pesquisar ~/.bashrc .
  3. bash chega à linha em ~/.bashrc que chama o script bash e inicia um subprocesso bash .
  4. O subprocesso bash resolve BASH_ENV to ~/.bashrc e, portanto, volta para a etapa 1 aqui, configurando um loop infinito.

Me deparei com esse problema porque queria executar algumas tarefas cron usando meu ambiente padrão e encontrei sugestões para definir BASH_ENV dentro do crontab. Estou postando isso como uma pergunta aqui porque não consegui encontrar o problema discutido em minhas pesquisas on-line e parece que algo poderia prejudicar outras pessoas. Estou postando minha própria solução abaixo, mas pode haver outras melhores.

    
por ws_e_c421 12.04.2018 / 17:05

1 resposta

1

Na parte superior de .bashrc put:

unset BASH_ENV

Se .bashrc já estiver sendo originado para configurar o ambiente, não haverá necessidade de chamadas futuras para bash para configurar o ambiente novamente.

    
por 12.04.2018 / 17:06