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
пропустит любые экспортированные функции.
Поскольку ваш скрипт может использовать источник .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
или какой-либо документации по этому поводу, будет невозможно узнать, что это такое ожидает.