O que é um “s” dentro de “$ -”?

10

Normalmente, estou ciente do conteúdo de $- . Em um CentOS recente eu recebo:

[grochmal@orion ~]$ echo $-
himBH

hmBH são todas as opções de set e i significa que meu shell é interativo.

No entanto, no meu Arch Linux eu tenho:

[grochmal@haps ~]$ echo $-
himBHs

Não consigo encontrar nada de útil em man bash e set -s me dá um erro. O que significa s ?

    
por grochmal 11.12.2016 / 23:39

1 resposta

13

A opção -s é a chamada inicial do bash com -s , que significa "comandos de origem de" padrão em ". A partir do manual:

-s If the -s option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an interactive shell.

É muito fácil testar:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

Iniciar um novo shell para todas as versões anteriores do bash não define essa opção por padrão:

$ b32sh -li
$ echo $-
himBH

Mas é no bash 4.4:

$ b44sh -li
$ echo $-
himBHs
    
por 12.12.2016 / 00:02