#shell #directory-structure
#оболочка #структура каталогов
Вопрос:
У меня есть структура каталогов типа
|--bringup-scripts
| |--prep.sh
|--scripts
| |--i2c0.func
| |--bit.func
The prep.sh выглядит примерно так :
#!/bin/bash
. ../scripts/i2c0.func
i2c0.func выглядит следующим образом :
#!/bin/sh
. ./bit.func
Поскольку существует зависимость i2c0.func от bit.функция, если я запускаю prep.sh из папки bringup-scripts он выдает сообщение об ошибке со словами
./bit.func: нет такого файла или каталога
Как я должен это решить?
Ответ №1:
Что вы могли бы сделать, так это не использовать относительные пути, вместо этого определяя начальную точку для всех сценариев в prep.sh файл, подобный этому:
#!/bin/bash
export ROOT_DIR="$(dirname $PWD)"
. $ROOT_DIR/scripts/i2c0.func
Вы также должны включать $ROOT_DIR
в качестве префикса для каждого сценария в каталоге scripts, например:
i2c0.func
#!/bin/sh
. $ROOT_DIR/scripts/bit.func
Ответ №2:
Я не знаю, есть ли стандартный способ сделать это, но вы могли бы попробовать изменить i2c0.func следующим образом:
#!/bin/sh
. ../scripts/bit.func
Хотя обратите внимание prep.sh получает рабочий каталог вызывающего объекта, поэтому он будет работать только тогда, когда вы запустите его из bringup-scripts/
или scripts/
.
Комментарии:
1. Спасибо, но в папке scripts также есть файлы, которые используют файл i2c0.func, это было бы не очень эффективно для них
2. @YashGupta Как нет?
3. Я не уверен в эффективности производительности, но хотел бы иметь что-то более универсальное, поскольку у меня много похожих зависимостей