Eu tenho um monte de funções armazenadas em ~/.bash_functions
, que é originado por ~/.bashrc
na inicialização do shell. O arquivo exporta todas as funções da seguinte forma:
# Find functions in this script based on a grep search, and export them.
grep ^'[[:alnum:]]' ~/.bash_functions |
grep '()' |
cut -d'(' -f1 |
while read function
do
export -f "$function"
done
unset function
Isso funciona perfeitamente em um shell local, mas não via SSH. Nenhuma das funções é realmente exportada (verificada usando declare -F
). No entanto, se eu colocar echo "$function"
no loop, ele imprime todos os nomes de função, portanto, sei que a única parte do loop que não está funcionando é a export
line.
As funções são exportadas corretamente se eu usar export -f
na sessão SSH ou se eu adicionar uma linha export -f
para cada função individual no arquivo.
Estou usando o 14.04 com o Bash 4.3.11, e o cliente SSH é o Termux no Android.
Editar: mesmo se eu adicionar declare -F
na parte inferior de ~/.bash_functions
, as funções serão mostradas como não exportadas.
Edit: Acabei de perceber que em uma sessão local, algumas das minhas funções não são exportadas, aparentemente aleatoriamente, mas não consigo encontrar nenhuma evidência de erro. Eu estou fazendo mais pesquisas ...