No that isn't a subshell. Subshells in bash are marked using the BASH_SUBSHELL
variable. This is incremented by 1 for each level of subshell:
$ echo $BASH_SUBSHELL
0
$ ( echo $BASH_SUBSHELL )
1
$ ( ( echo $BASH_SUBSHELL ) )
2
$ ( ( ( echo $BASH_SUBSHELL ) ) )
3
$ ( ( ( ( echo $BASH_SUBSHELL ) ) ) )
4
$ ( ( ( ( ( echo $BASH_SUBSHELL ) ) ) ) )
5
But, this variable doesn't change if you just launch another shell:
$ echo $BASH_SUBSHELL
0
$ bash
$ echo $BASH_SUBSHELL
0
This is because when you run a new bash shell, this is a fully new instance. Yes, exported variables will be inherited because this is a child shell of your original bash instance, but as you can see above, it isn't actually a subshell of it. Note that subshells inherit all variables, not only the exported ones:
$ foo=var
$ ( echo $BASH_SUBSHELL; echo $foo )
1
var
$ bash
$ echo $var ## <-- prints an empty line
This is also explained in the COMMAND EXECUTION ENVIRONMENT
of man bash
(emphasis mine):
Command substitution, commands grouped with parentheses, and
asynchronous commands are invoked in a subshell environment that
is a duplicate of the shell environment, except that traps caught by
the shell are reset to the values that the shell inherited from
its parent at invocation. Builtin commands that are invoked as part
of a pipeline are also executed in a subshell environment. Changes
made to the subshell environment cannot affect the shell's execution
environment.
So, subshell environments are almost exact duplicates of their parent shells, and that includes all variables, not only exported ones.