Джири Валента на 100% прав, что лучший способ сделать это - переместить все функции scrip1. sh в отдельный файл, например,
script1_functions.sh # move all functions from script1.sh to here
script1.sh # sources script1_functions.sh and executes commands
script2.sh # sources script1_functions.sh and executes other commands
Однако что, если script1. sh находится вне вашего контроля (например, код поставщика). В этом случае копирование функций в script2. sh кажется хорошей идеей. Однако script1. sh может быть изменен в будущем (безопасное предположение), и вы можете захотеть, чтобы script2. sh автоматически использовал измененные функции.
Но IMO, это более эффективно, чем чтобы решить эту проблему. Вот пример такого бесполезного решения: получите md5sum текущего script1. sh и убедитесь, что оно такое же в начале script2. sh. Если нет, выведите предупреждение или ошибку (и, возможно, прервите script2. sh), что script1. sh был изменен, поэтому кому-то необходимо проверить изменения и обновить либо код script2. sh, либо script2. sh md5sum script1. sh, если проверка кода определяет, что изменения не требуются.