No shell POSIX, você pode usar set -u :
#!/bin/sh
set -u
: "${UNSET_VAR}"
ou usando a Expansão do parâmetro :
: "${UNSET_VAR?Unset variable}"
No seu caso, você deve usar :?
em vez de ?
para também falhar em variáveis definidas, mas vazias:
rm -rf -- "${PROJECT_HOME:?PROJECT_HOME empty or unset}"/*