Я предполагаю, что они оба эквивалентны, когда переменная используется в форме:
${HOME}
фигурные скобки служат для разграничения переменной WORD, когда в противном случае она была бы неотличима от другого WORD, непосредственно примыкающего к ней. например,
echo $HOMEahoy
не даст ничего (кроме новой строки из echo
)
echo ${HOME}ahoy
даст эхо вашего домашнего пути, как вы ожидаете, плюс ahoy
.
Я подозреваю, что в этом случае {}
не нужны, потому что =:/
, скорее всего, не являются допустимыми символами переменных в bash
, поэтому bash может сам определить границы WORD.
При написании сценариев оболочки, если есть сомнения, я всегда ставлю фигурные скобки.
Эта идея не ограничивается bash
, например, в PHP есть аналогичное поведение - только в PHP оно принимает немного другую форму, например, {$VAR_NAME}