
Я видел следующее (для запуска веб-сервера nodejs express) и не могу найти документацию по *
этому поводу:
prompt>> DEBUG=* command
Это устанавливает DEBUG
временное значение в среде команды, но какое значение? Я попробовал export DEBUG=*
на отдельной строке и DEBUG
в итоге получил звезду:
prompt>> export DEBUG=*
prompt>> printenv DEBUG
*
prompt>>
Так что, возможно, в этом нет ничего особенного, и веб-сервер nodejs express проверяет, DEBUG
есть ли "*". Существуют ли ситуации (например, разная история команд), когда это DEBUG=* command
приведет к тому, DEBUG
что в среде команды не будет звезды?
решение1
man bash
Подробно описаны все расширения, которые выполняются во время присвоения переменных:
Текст после знака = в каждом назначении переменной подвергается расширению тильды, расширению параметров, подстановке команд, арифметическому расширению и удалению кавычек перед назначением переменной.
Никтоиз этих расширений изменят значение DEBUG=*
.
Еслирасширение имени путибыли выполнены во время назначения переменных, это привело бы *
к замене списка файлов. Но,расширение имени путиявляетсянетв списке выше и, следовательно, не будет изменять *
.
В общем, DEBUG=*
устанавливает значение DEBUG
литерала *
.