Como exportar a função definida por eval?

4

Defina uma função dinâmica executando isso na linha de comando:

eval "ab() { echo test; }"

Ele é executado e imprime o teste.

Coloque a mesma instrução em um script test.sh e execute o script. Nada acontece. A função não é definida.

Presumo que seja porque a função é definida dentro do script, mas não fora dela. Então, tento adicionar no script:

export -f ab

Mas isso não funciona. Como faço para exportar funções de um script para o shell?

    
por Kshitiz Sharma 01.10.2015 / 13:17

1 resposta

5

Você não pode exportar uma função ou uma variável para um shell pai, você só pode exportar para o shell que está executando o script ou para shells filho.

Para que um script altere o ambiente do seu shell atual, você precisa executar o script com source ou . . por exemplo. em vez de executar ./myscript.sh , você executaria . ./myscript.sh

Isso diz ao seu shell atual para executar o script em si, em vez de gerar um sub-shell para executá-lo em ... e, assim, permite que o script modifique o ambiente atual.

    
por 01.10.2015 / 13:31