Если мы посмотрим на следующий пример:
# testing(){ echo hello;}
# testing
hello
# echo $(testing)
hello
# echo testing >script
# ./script
./script: line 1: testing: command not found
# source ./script
hello
# export -f testing
# ./script
hello
Оказывается, что bash
функцию нужно экспортировать только в том случае, если вы хотите использовать ее в сценарии без источников. Я пробовал несколько уровней подоболочек, поведение одинаковое. Может ли кто-то это подтвердить, потому что я нахожу это противоречащим утверждению, что локальные переменные не существуют в подоболочках.