O que você vê aqui é a expansão de parâmetros , que pode ser vista como um conjunto de métodos usados pelo bash como atalhos para avaliar variáveis (também conhecidos como parâmetros). Neste caso específico, estamos lidando com a seguinte estrutura:
${parameter:?word}
Display Error if Null or Unset. If
parameter is null or unset, the expan‐
sion of word (or a message to that
effect if word is not present) is
written to the standard error and the
shell, if it is not interactive,
exits. Otherwise, the value of param‐
eter is substituted.
(tirada de homem bash )
Em resumo, se uma variável não estiver definida ou não existir, envie um erro assim:
xieerqi:$ echo ${NOTSET?this param not set}
mksh: NOTSET: this param not set
Se a variável estiver definida, não faça nada
xieerqi:$ echo ${PWD?this param not set}
/home/xieerqi
No seu caso específico, o parâmetro debug
deve ser passado para node
e, se não estiver definido, mostre ao usuário para quais valores ele deve ser definido, ou seja, --nocrankshaft --nolazy --nodead_code_elimination --debug-brk=15454