Я объявляю функции в одном файле оболочки
# a.sh
foo() { ... }
function bar() { ... }
и импортирую в другой файл оболочки с помощью source
:
# b.sh
source ./a.sh
# invoke foo and bar
foo
bar
Теперь в оболочке я могу использовать foo
/ bar
после выполнения b.sh
$ source b.sh
...
# I can call foo or bar now in the shell (undesirable)
$ foo
...
Как сделать функции локальными переменными в области действия импортируемого файла и избежать их загрязнения глобальными переменными / переменными среды?