Você provavelmente viu uma expansão de parâmetro para definir um valor padrão .
A diferença é se a variável não está definida ou está configurada com um valor nulo:
-
quando a variável não está definida, não há diferença
$ unset MYVAR; : ${MYVAR:=SomeVal}; echo "$MYVAR" SomeVal $ unset MYVAR; : ${MYVAR=SomeVal}; echo "$MYVAR" SomeVal
-
quando a variável tem um valor, não há diferença
$ MYVAR="foo"; : ${MYVAR:=SomeVal}; echo "$MYVAR" foo $ MYVAR="foo"; : ${MYVAR=SomeVal}; echo "$MYVAR" foo
-
quando a variável tem valor nulo:
$ MYVAR=""; : ${MYVAR:=SomeVal}; echo "$MYVAR" SomeVal $ MYVAR=""; : ${MYVAR=SomeVal}; echo "$MYVAR" # empty line