请有人解释以下行为,好吗?
$ echo $SHLVL
1
$ zsh -c 'echo $SHLVL'
2
$ zsh -c '(echo $SHLVL)'
1
我不理解上一个结果。zsh是否会为()子shell重置$SHLVL?Bash的结果是不同的:
$ echo $SHLVL
1
$ bash -c 'echo $SHLVL'
2
$ bash -c '(echo $SHLVL)'
2
至少看起来更合乎逻辑。无论如何,当我测试时,我期望最后的结果是3。为什么没有shell给出那个结果呢?我对$SHLVL有什么误解吗?
zsh -c '( ( (print $SHLVL $ZSH_SUBSHELL) ) )'
回显-1 3
。 - Edouard Thiel