bash スクリプトで変数に値がセットされていない時だけデフォルト値を設定する方法

: ${X:="value"}

先頭に :(コロン)とそれに続いて空白を指定するのがミソ。
: は bash の組み込みコマンドで、渡された引数の展開だけを行うコマンドです。

これで X という変数が存在しないか存在していても値が null のとき、X に "value" という値が設定されます。