$-
son las banderas de opciones actuales establecidas por el propio shell, en invocación o usando el set
comando incorporado:
$ echo $-
himBH
$ set -a
$ echo $-
ahimBH
"${-#*i}"
es la sintaxis para la eliminación de cadenas: (de la documentación POSIX )
$ {parámetro # [palabra]}
Eliminar el patrón de prefijo más pequeño. La palabra se expandirá para producir un patrón. La expansión del parámetro dará como resultado el parámetro, con la porción más pequeña del prefijo emparejada por el patrón eliminado. Si está presente, la palabra no comenzará con un '#' sin comillas.
$ {parámetro ## [palabra]}
Eliminar el patrón de prefijo más grande. La palabra se expandirá para producir un patrón. La expansión del parámetro dará como resultado el parámetro, con la porción más grande del prefijo emparejada por el patrón eliminado.
Entonces, ${-#*i}
elimine la cadena más corta hasta el primer i
carácter:
$ echo "${-#*i}"
mBH
En su caso, if [ "${-#*i}" != "$-" ]
verifique si su shell es interactivo o no.