Veja "Expansão de Parâmetros" em man bash
:
${parameter:=word}
Assign Default Values. If parameter is unset or null, the expansion of word is assigned to parameter. The value of parameter is then substituted. Positional parameters and special parameters may not be assigned to in this way.
Os dois pontos são explicados acima:
When not performing substring expansion, using the forms documented below, bash tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset.
Evidências:
var=${str=expr}
echo $var
echo $str
Saída:
expr
expr