Чтобы в основном ответить на ваш вопрос, ключевое слово «экспорт» перед назначением переменной сделает его доступным для всех оболочек sub -, которые вы будете запускать, например:
export DESTINATARIO="mail"
Однако, если причина в том, что ваш сценарий "слишком большой", вы можете также рассмотреть возможность организации ваших сценариев оболочки в библиотеки, с верхним сценарием, вызывающим функции во включаемых файлах. Пример:
#!/bin/bash
# load functions defined in mylib1.sh and mylib2.sh
source mylib1.sh
source mylib2.sh
# set my var
VAR1=123abc
# call functions from mylib1.sh and mylib2.sh
lib1func1 $VAR1
lib2func2 $VAR1
Наличие, например, в mylib1.sh определения функции lib1func1:
lib1func1() {
local firstvar=$1 # reading
echo $firstvar
}
Конечно, верхняя оболочка также может экспортировать переменные (глобальные ), которые будут известны библиотекам, но я бы не рекомендовал этот способ, поскольку он менее модульный.
Обновление на случай, если у кого-то возникнет подобная проблема. :Похоже, это проблема ядра. Я использовал версию ядра 5.3.0 -51 -generic, и переход на более новую версию 5.3.17 -050317 -generic решил проблему. Команда upower по-прежнему выдает тот же странный вывод, но теперь компьютер работает плавно и не зависает даже при загрузке от батареи.