$-
são os sinalizadores de opção atuais definidos pelo próprio shell, na chamada ou usando o set
comando builtin:
$ echo $-
himBH
$ set -a
$ echo $-
ahimBH
"${-#*i}"
é uma sintaxe para remoção de string: (da documentação do POSIX )
$ {parâmetro # [palavra]}
Remova o menor padrão de prefixo. A palavra deve ser expandida para produzir um padrão. A expansão do parâmetro resultará em parâmetro, com a menor porção do prefixo correspondida pelo padrão excluída. Se presente, a palavra não começará com um '#' não citado.
$ {parâmetro ## [palavra]}
Remova o maior padrão de prefixo. A palavra deve ser expandida para produzir um padrão. A expansão do parâmetro resultará em parâmetro, com a maior parte do prefixo correspondida pelo padrão excluída.
Portanto, ${-#*i}
remova a corda mais curta até o primeiro i
caractere:
$ echo "${-#*i}"
mBH
No seu caso, if [ "${-#*i}" != "$-" ]
verificando se o seu shell é interativo ou não.