Por que o valor de BASH_SUBSHELL não muda enquanto o valor de SHLVL é alterado? [duplicado]

3

O manual da bash diz

BASH_SUBSHELL Incremented by one within each subshell or subshell environment when the shell begins executing in that environment. The initial value is 0.

SHLVL Incremented by one each time a new instance of Bash is started. This is intended to be a count of how deeply your Bash shells are nested.

Quais são as diferenças entre as duas variáveis internas?

Especificamente, quais são as diferenças entre "subshell or subshell environment" e "Bash shells"?

No exemplo a seguir, por que o valor de BASH_SUBSHELL não muda, enquanto o valor de SHLVL é alterado?

$ echo $BASH_SUBSHELL
0
$ echo $SHLVL
1
$ bash
$ echo $BASH_SUBSHELL
0
$ echo $SHLVL
2
    
por Tim 09.12.2016 / 07:17

1 resposta

3

isto se refere ao subshell dentro do shell principal

compare

echo "a" $BASH_SUBSHELL "b" $SHLVL

com

( echo "a" $BASH_SUBSHELL "b" $SHLVL )

ou

( ( echo "a" $BASH_SUBSHELL "b" $SHLVL ) ) 

isso pode ser útil dentro da função se você definir env var.

    
por 09.12.2016 / 07:28

Tags