Como carregar .bashrc de “bash -c”

3

Tentando executar uma função definida no meu .bashrc usando "bash -c". Acabo com o erro "comando não encontrado". Como obtenho "bash -c" para carregar meu arquivo init?

    
por Gilles 18.11.2013 / 03:21

2 respostas

5

Você pode transformá-lo em um shell interativo com -i e, em seguida, seu ~ / .bashrc será lido:

bash -i -c "echo \$EDITOR"

A outra coisa que você pode fazer é fornecer o arquivo explícito. Se você tiver /var/tmp/test com conteúdo:

export XXX=123

e você faz

bash -c "source /var/tmp/test; echo \$XXX"

você receberá 123 ecoado.

    
por 18.11.2013 / 15:18
1

Outra opção seria definir a variável $BASH_ENV :

   When bash is started non-interactively, to  run  a  shell  script,  for
   example, it looks for the variable BASH_ENV in the environment, expands
   its value if it appears there, and uses the expanded value as the  name
   of  a  file to read and execute.  Bash behaves as if the following com‐
   mand were executed:
          if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
   but the value of the PATH variable is not used to search for  the  file
   name.

Então, você poderia fazer:

BASH_ENV=~/.bashrc && bash -c 'your_function'
    
por 18.11.2013 / 17:07

Tags