¿Qué es una "s" dentro de "$ -"?

10

Normalmente conozco bien el contenido de $-. En un CentOS reciente obtengo:

[grochmal@orion ~]$ echo $-
himBH

hmBHson todas las opciones sety isignifica que mi shell es interactivo.

Sin embargo, en mi Arch Linux obtuve:

[grochmal@haps ~]$ echo $-
himBHs

No puedo encontrar nada útil man bashy set -sme da un error. ¿Qué significa eso s?

grochmal
fuente

Respuestas:

13

La -sopción es la llamada de inicio bash con -s, que significa "comandos de origen desde" estándar en ". Del manual:

-s Si la opción -s está presente, o si no quedan argumentos después del procesamiento de la opción, los comandos se leen desde la entrada estándar. Esta opción permite establecer los parámetros posicionales cuando se invoca un shell interactivo.

Es muy fácil probar:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Iniciar un nuevo shell para todas las versiones anteriores de bash no establece esa opción por defecto:

$ b32sh -li
$ echo $-
himBH

Pero está en bash 4.4:

$ b44sh -li
$ echo $-
himBHs
Isaac
fuente
Y la segunda parte explica por qué lo conseguí en Arch. El valor de Mi CentOS BASH_VERSIONes de liberación de 4.2.46 (1) mientras que en Arch es de liberación de 4.4.5 (1).
grochmal