Explicación del operador de dos puntos en “: $ {foo = value}”

Entiendo que el operador de dos puntos en bash actúa como un nulo , y sé que se usa en la expansión de parámetros , además de que se usa de otras maneras, pero ¿alguien puede explicar esto?

: ${SOMETHING='value'} 

De la experimentación, sé que esto establece la variable de entorno $SOMETHING en 'value' pero ¿por qué?

“Solo porque lo haga” es una respuesta válida, pero luego, por favor, dirígeme a la documentación correspondiente (que no puedo encontrar) o sería útil un nombre adecuado para este uso. Sin embargo, espero que haya una explicación más esclarecedora.

La expresión establece ALGO en value si aún no está establecido. Este es un operador útil para tener en muchas situaciones. Sin embargo, también devuelve el valor asignado, por lo que si simplemente se ejecutó

 ${SOMETHING='value'} 

entonces su caparazón trataría de invocar el value comando. Esto podría o no hacer algo no deseado; al menos lanzaría un mensaje “value: command not found”.

Para evitar esto, puede usar no-op : que evalúa su argumento y luego lo tira, en lugar de ejecutarlo.

Explicado aquí: http://tldp.org/LDP/abs/html/parameter-substitution.html

Si el parámetro no está configurado, configúralo como predeterminado.

Ambas formas son casi equivalentes. The: hace una diferencia solo cuando se ha declarado el parámetro $ y es nulo, [1] como se indicó anteriormente.

 echo ${var=abc} # abc echo ${var=xyz} # abc # $var had already been set to abc, so it did not change.