Добрый день. Баш, конечно, не настоящий язык программирования, но тем не менее писать на нём можно. Пускай не руками, но можно. Собственно говоря, хотелось бы выяснить несколько моментов касательно абстрагирования некоторых методов в отдельные, если можно так сказать, библиотеки. Как это делают здоровые и успешные баше-кодеры?
Допустим, есть такая ситуация.
./dir1/file1.sh
./dir1/file2.sh
file1.sh и file2.sh являются разными по смысловому наполнению наборами функций. При этом, file2.sh явно использует file1.sh, то есть внутри file2.sh есть строка
source "./file1.sh"
Теперь, есть совершенное иной файл file.sh, в котором необходимо использовать функции из file2.sh
./anus/file.sh
Обычный инклюд ../dir1/file2.sh не оправдывает надежд, так как второй по вложенности инклюд не находит файла ./file1.sh.
Поэтому встаёт вопрос - на какой стороне вертеть костыли? На принимающей стороне (то есть в file.sh), или же есть какие-то удобные механизмы обработки таких ситуаций в самой библиотеке (то есть в file2.sh)?
Пока я использую нечто следующее
cd "../dir1/"
source "./file2.sh"
cd - 2>&1 > /dev/null
Насколько безопасен и логичен такой способ?
С радостью выслушаю любые советы и размышления. Если вопрос показался кому-то слишком очевидным, спешу заверить - это не издевательства, вопрос вполне искренний. Спасибо.