Content #
echo $BASH_SUBSHELL
如果该命令返回0,那么表明没有子shell。如果该命令返回1或者其他更大的数字,则表明存在子shell。
下面这个例子先后使用了命令列表和echo $BASH_SUBSHELL:
$ pwd ; ls test* ; cd /etc ; pwd ; cd ; pwd ; ls my* ; echo $BASH_SUBSHELL
/home/christine
test_file test_one test_two
/etc
/home/christine
my_file my_scrapt my_script my_scrypt
0
在输出结果的最后是数字0。这表明并未创建子shell来执行这些命令。
如果改用进程列表,则结果就不一样了。
$ (pwd ; ls test* ; cd /etc ; pwd ; cd ; pwd ; ls my* ; echo $BASH_SUBSHELL)
/home/christine
test_file test_one test_two
/etc
/home/christine
my_file my_scrapt my_script my_scrypt
1
这次在输出结果的最后是数字1。这表明的确创建了子shell来执行这些命令。
From #
Linux命令行与shell脚本编程大全