:
é um shell embutido que é basicamente equivalente ao comando true
. É frequentemente usado como um não operacional, por exemplo, após uma instrução if
. Você pode ler mais sobre isso em esta pergunta do estouro de pilha .
O ${varname=value}
basicamente significa definir o valor de $varname
para value
se $varname
ainda não estiver definido e, em seguida, retornar o valor de $ varname. Porém, se você tentar executar isso na linha de comando, ele tentará executar o valor retornado. Colocar o :
na frente como não-operante evita que o bash tente executar o valor.
Note que existem duas formas ligeiramente diferentes:
${varname:=value}
define varname para value se varname não estiver definido ou nulo.
${varname=value}
define apenas o valor de varname se varname não estiver definido no momento (ou seja, ele não alterará varname de "" para value)
(Obrigado a chepner por esclarecer isso em um comentário).