script no se ejecuta bien en rc.local [Solucionado]

Hola, tengo la BIOS hecha cisco así que he escrito esto

#!/bin/bash
set $(date)
echo $4 > date
hora=$(cut -d 1,2,4,5 date)
rm date
case $2 in
    jan) mes=01;;
....
    dec) mes=12;;
esac
date $mes$3$hora$(($6+15))

Le he dado permisos de ejecución y su propietario es root.
Si lo ejecuto normalmente funciona bien pero si lo incluyo en /etc/rc.local falla con el siguiente mensaje

error: date Invalid string '1508302011'

por lo que deduzco que se "come" el primer parametro, o sea el mes.
¿Qué puede estar pasando?

Perdón, es "cut -b"
y decir que otras órdenes lanzadas desde /etc/rc.local funcionan correctamente (fbset blabla, por ejemplo)
Gracias.

hola deberias ver como esta el locale pone a mi el date +%b me da sep tambien pero +%B me da septiembre asi que capas para otros mese no te ande, el cut inicial a mi no me anda :)
si le das man a date en los modificadores ya podes armar la fecha de una manera mas facil por ejemplo
date +%m-%d-%A--%H:%M:%S

y la variable la podes armar
set $(date)
tiempo=$(date +%m%d%H%M$(($6+15)))
date $tiempo

Gracias por contestar.
Si ejecuto esto en rc.local

#!/bin/bash
fecha=$(date +%m%d%k%M)
a=2011
date $fecha$a

ya funciona bien.
Me quedo con la duda de porque el primero funciona si lo ejecuto desde consola con $sudo date.sh y no desde rc.local
Un saludo.

Tenías razón con lo del locale y el formato.
date-log

++date
+ set Sun Sep 15 18:50:40 UTC 1996
+ case $2 in
++ cut -b 1,2,4,5 date
+ hora=1850
+ rm date
+ date 1518502011
+ date: invalid date '1518502011'
+ set +o xtrace

en consola

$date
dom sep 15 19:03:04 UTC 1996

bien, hasta ahí lo entiendo

#echo $LANG
es_ES.UTF-8

¿Qué entorno hay antes del login? ¿Cómo sé que variables y qué valores hay disponibles en ese momento? No hace falta que contestéis, creo que ya me apaño XDDD.
Gracias por la ayuda, lo marco solucionado.