Eu tenho um arquivo bash, src-useful.bash
, contendo funções úteis como say_hello()
, localizado em / path / to / useful.
No meu ~/.bash_profile
, adicionei as seguintes linhas:
export BASH_USEFUL=/path/to/useful
source $BASH_USEFUL/src-useful.bash
Abrindo um novo terminal, posso verificar o seguinte:
$ echo $BASH_USEFUL
/path/to/useful
$ cat $BASH_USEFUL/src-useful.bash
function hello() {
echo "hello!"
}
$ hello
hello!
Eu criei um script, say_hello.sh
:
$ cat say_hello.sh
echo "BASH_USEFUL: $BASH_USEFUL"
hello
$ ./say_hello.sh
BASH_USEFUL: /path/to/useful # Recognizsed
say_hello.sh: line 2: say_hello: command not found # Not recognized?
Se eu localizar $BASH_USEFUL/src-useful.bash
em say_hello.sh
, funcionará:
$ cat say_hello.sh
echo "BASH_USEFUL: $BASH_USEFUL"
source $BASH_USEFUL/src-useful
say_hello
$ ./say_hello.sh
BASH_USEFUL: /path/to/useful # Recognized
hello! # Function say_hello is now recognized
Eu gostaria de saber por que a variável BASH_USEFUL
ainda é reconhecida pelo meu script, enquanto as funções do meu arquivo de origem não podem ser vistas no ambiente pelo meu script de execução. Existe uma solução alternativa além de obter meu src-useful.bash
em meus scripts? Eu gostaria que as funções de src-useful.bash
fossem carregadas no ambiente de qualquer script que eu lançasse.