Incluir uma função bash no script pai

2

Eu posso definir a função no bash e usá-la:

foo() { echo $1; }
foo test

Mas se eu quiser coletar minhas funções em um script bash, tudo estará indisponível:

init.bash

#!/bin/bash
foo() { echo $1; }  
export -f foo # This not helps

Usando:

./init.bash && foo test # error here

Existe alguma maneira de exportar as funções do script para o escopo pai?
Sem escrever para .bashrc , é muito global
O mesmo que .bashrc , mas apenas para a instância atual do bash ...

    
por vp_arth 03.05.2014 / 17:56

1 resposta

4

Você pode source o arquivo init.sh . Não é necessário export a função nesse arquivo.

$ cat init.bash 
foo() { echo $1; }

E use:

$ . ./init.bash && foo test
test

O fornecimento de um arquivo executaria comandos a partir dele no contexto atual do shell. Como tal, as funções estariam disponíveis no pai .

export definiria o atributo para uma variável que seria aplicável para o shell e sub-shell atuais. Não o shell pai. Você precisa definir a variável no contexto da shell atual .

    
por 03.05.2014 / 17:59