Проблема: я хотел, чтобы файл моего сценария оболочки был короче, поэтому я надеялся перенести некоторые функции в другой файл.

Решение: Этот фрагмент кода оболочки позволил мне загрузить функции, определенные в отдельном файле:

SRC_DIR=$(cd "$(dirname $0)"; pwd -P)
. $SRC_DIR/scripts/functions.sh  # functions defined in this external file

Примечания: Это также помогает при рефакторинге, поскольку вам нужно изменить код оболочки только в одном месте.

Я использовал:

SRC_DIR=$(readlink -f ${0%/*})
. $SRC_DIR/scripts/functions.sh

но readlink -f не работает в оболочке Mac OS X/BSD.

Использованная литература: