~/.bash_profile
e ~/.bashrc
não são lidos por scripts e as funções não são exportadas por padrão. Para fazer isso, você pode usar export -f
da seguinte forma:
$ cat > script << 'EOF'
#!/bin/bash
foo
EOF
$ chmod a+x script
$ ./script
./script: line 2: foo: command not found
$ foo() { echo "works" ; }
$ export -f foo
$ ./script
works
export -f foo
também pode ser chamado em ~/.bash_profile
para disponibilizar essa função a scripts após o login. Esteja avisado que export -f
não é portátil.
Uma solução melhor seria fornecer o arquivo contendo a função usando . file
. Isso é muito mais portátil e não depende do seu ambiente ser configurado de uma maneira particular.