Parece que é um erro na ordem de operação. Se eu fizer este comando, funciona bem:
$ date -u -d "$(date -u -d "1970-01-01 00:00:00 UTC + 'date +%s' seconds") \
-6 months -1 day"
A execução disso gera resultados estranhos:
$ date -u -d "$(date +%s) seconds -6 months -1 day"
Sun Sep 3 07:48:54 UTC 2056
Mas proteger o $(date +%s) seconds
com parens parece resolver o problema:
$ date -u -d "($(date +%s) seconds) -6 months -1 day"
Fri Feb 1 15:55:12 UTC 2013