Não tem nada a ver com o shell, mas com o comando date . A opção -d é específica da implementação GNU do comando date . Em sistemas não-GNU, isso não funcionará a menos que você instale a versão GNU de date como um pacote separado (que provavelmente seria instalado como gdate ou como /opt/gnu/bin/date ...).
Note que versões recentes do ksh93 possuem um recurso similar com o comando printf builtin:
printf '%(%Y%m)T\n' '1 month ago'
(veja também zsh para outro shell com suporte a manipulação de data embutida ( strftime embutido no módulo zsh/datetime )).
Algumas outras implementações de date também possuem recursos para ajustar datas. Por exemplo, com BSD date , você poderia fazer:
date -v -1m +%Y%m
Não estou ciente de que o AIX vem com um comando que faz o cálculo de data e não há nenhum comando no toolchest POSIX, portanto, nenhum comando padrão / portátil para isso. Você pode reverter para perl ou fazer o cálculo manualmente:
eval "$(date +'y=%Y m=%m')"
m=$((${m#0} - 1))
[ "$m" -gt 0 ] || m=12 y=$((y - 1)) # January case
printf '%d%02d\n' "$y" "$m"