bashマニュアルによると
BASH_SUBSHELL シェルがその環境で実行を開始するときは、各サブシェルまたはサブシェル環境に 1 つずつ追加します。初期値は0です。
SHLVL新しい Bash インスタンスが起動されるたびに 1 ずつ増加します。これは、Bashシェルの入れ子の深さを計算するために使用されます。
これら2つの組み込み変数の違いは何ですか?
具体的には、「サブシェルまたはサブシェル環境」と「Bashシェル」の違いは何ですか?
次の例では、の値はBASH_SUBSHELL
変わりませんが、の値SHLVL
が変わるのはなぜですか?
$ echo $BASH_SUBSHELL
0
$ echo $SHLVL
1
$ bash
$ echo $BASH_SUBSHELL
0
$ echo $SHLVL
2
ベストアンサー1
これはメインシェル内のサブシェルを表します。
比較する
echo "a" $BASH_SUBSHELL "b" $SHLVL
そして
( echo "a" $BASH_SUBSHELL "b" $SHLVL )
または
( ( echo "a" $BASH_SUBSHELL "b" $SHLVL ) )
環境変数を設定すると、関数内で役に立ちます。