Eles representam os valores dos flags do shell; isso é definido pelo POSIX :
-(Hyphen.) Expands to the current option flags (the single-letter option names concatenated into a string) as specified on invocation, by the
setspecial built-in command, or implicitly by the shell.
O manual do Zsh menciona brevemente:
- <S> Flags supplied to the shell on invocation or by the
setorsetoptcommands.
como o manual de Bash na descrição de set :
The current set of options may be found in
$-.
Para entender a saída de echo $- , você precisa procurar as opções no manual do seu shell. Por exemplo, no Bash, echo $- outputs himBHs para mim, o que significa que as opções -h , -m , -B e -H estão ativadas (consulte help set para obter detalhes), que o shell é interativo ( -i ) e leitura da entrada padrão ( -s ).