Так что я очень хотел спросить об этом, но не хотел рисковать потерей репутации из-за этого, однако на данный момент мне действительно нужен какой-то прямой вклад. Я новичок Linux, использующий Raspberry Pi для настройки сервера LAMP, и мне нравится создавать файлы оболочки для всех моих команд установки, но мне также нравится сохранять модульность, например:
#!/bin/sh
#LAMPinstall.sh
./apacheinstall.sh
./mysqlinstall.sh
./phpinstall.sh
Я привык к кодированию сред, где такие вызовы тривиальны, но очевидная проблема с этим сценарием в том, что он требует, чтобы текущий рабочий каталог был каталогом сценария на момент вызова.
Я много сделал Linux -specifi c чтение по абсолютным или относительным путям, выбор источника по сравнению с вызовом, bash по отношению к оболочке и различные методы для указания пути сценария в качестве решения для вызовов относительного пути вне CWD, но на В конце дня я не приблизился к решению, к которому чувствую себя хорошо, и, возможно, никогда не буду. На данный момент я доволен использованием абсолютных путей, хранящихся в переменной, таких как:
#!/bin/sh
#LAMPinstall.sh
thisdir=/path/to/scripts
${thisdir}/apacheinstall.sh
${thisdir}/mysqlinstall.sh
${thisdir}/phpinstall.sh
, хотя мне придется модифицировать скрипт при каждом изменении пути.
Так Мой вопрос - скорее вопрос передового опыта, чем просьба о решении конкретной проблемы (хотя это конкретная проблема c), чтобы охватить следующие всего вместо статей и вопросов, о которых я читал каждая отдельная часть:
- Это плохая идея, чтобы организовать вызовы сценариев оболочки, как я использую?
- Это плохая идея, чтобы привести путь сценария используя что-то вроде
$(dirname "$0")
. Если да, то как иначе вы бы поддерживали организацию нескольких файлов оболочки? - При рассмотрении таких вопросов, как # 2, важно ли учитывать все возможные варианты использования вашего сценария (т. Е. Если есть подкаталоги и они получены ) кем-то другим, или достаточно сказать: «Этот сценарий должен вызываться, а не только из источника, если кто-то злоупотребляет им, то он на них». Извините, я не могу сформулировать это лучше.
Кроме того, пожалуйста, простите меня, если это наивный вопрос, я просто хотел бы получить некоторую информацию по этому вопросу.