«Команда не найдена» при передаче аргумента из Makefile в сценарий оболочки

declare -xили перечислит все переменные, помеченные для экспорта , как иexport:

$ declare -x
declare -x ALTERNATE_EDITOR=""
declare -x COLORFGBG="7;0"
declare -x COMMAND_MODE="unix2003"
...
declare -x VISUAL="gvim"

В нем не будут перечислены какие-либо локальные переменные, которые не экспортируются, но будут включены переменные, унаследованные от внешней среды оболочки.

declare -x -F -pпропустит любые экспортированные функции.

2
16.02.2020, 12:05
1 ответ

Поскольку ваш скрипт может использовать источник .build/utils.bash, вы уже доказали, что на самом деле можете прочитать его. Например, попробуйте less.build/utils.bashв каталоге, содержащем Makefile.

Чтобы решить реальную проблему, не изменяя .build/utils.bash, вы можете попробовать присвоить содержимое $1вашей переменной MY_NAME, а затем использовать команду shift, чтобы удалить его из $1-, прежде чем вы source.build/utils.sh.

Но тогда utils.bashполучает $1как пустую строку, что может привести к сбою или выполнению чего-то другого -без прочтения utils.bashили какой-либо документации по этому поводу, будет невозможно узнать, что это такое ожидает.

0
28.04.2021, 23:23

Теги

Похожие вопросы