O que é um "s" dentro de "$ -"?


10

Eu normalmente estou bem ciente do conteúdo de $-. Em um recente CentOS, recebo:

[grochmal@orion ~]$ echo $-
himBH

hmBHsão todas opções de sete isignifica que meu shell é interativo.

No entanto, no meu Arch Linux, obtive:

[grochmal@haps ~]$ echo $-
himBHs

Não consigo encontrar nada útil man bashe set -sme dá um erro. O que isso ssignifica?

Respostas:


13

A -sopção é a chamada inicial do bash -s, o que significa "comandos de origem de" entrada padrão ".

-s Se a opção -s estiver presente ou se nenhum argumento permanecer após o processamento da opção, os comandos serão lidos a partir da entrada padrão. Esta opção permite que os parâmetros posicionais sejam definidos ao chamar um shell interativo.

É 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 está no bash 4.4:

$ b44sh -li
$ echo $-
himBHs

E a segunda parte explica por que eu peguei isso no Arch. O valor do meu CentOS para BASH_VERSIONé 4.2.46 (1) -release enquanto no Arch é 4.4.5 (1) -release.
grochmal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.