为什么一个subshell of an interactive shell 运行 as an interactive shell?
Why does a subshell of an interactive shell run as an interactive shell?
在我的 Bash 会话中,我 运行 这个命令:
(echo $$ $BASHPID $-)
然后我得到
22108 25602 himBH
所以,我的子shell 运行s 作为一个互动 shell。
如果我尝试运行在后台执行相同的命令
(echo $$ $BASHPID $-) &
我得到相同的输出。为什么 subshell 运行 作为一个交互式 shell?
子shell 继承父的所有特征,包括设置。这是 subshell 定义的一部分。 运行 在前景或背景中都没有区别 - 作业可以很容易地在前景和背景之间交换。
非子shell 不会互动。例如,如果我输入
(echo $$ $BASHPID $-)
到名为 gash.sh
的脚本中,然后从非交互式 shell:
中调用它
$ bash gash.sh
73879 73880 hB
但是如果我获取文件,那么它是交互式 shell:
的子shell
$ . ./gash.sh
1130 himBH
在我的 Bash 会话中,我 运行 这个命令:
(echo $$ $BASHPID $-)
然后我得到
22108 25602 himBH
所以,我的子shell 运行s 作为一个互动 shell。
如果我尝试运行在后台执行相同的命令
(echo $$ $BASHPID $-) &
我得到相同的输出。为什么 subshell 运行 作为一个交互式 shell?
子shell 继承父的所有特征,包括设置。这是 subshell 定义的一部分。 运行 在前景或背景中都没有区别 - 作业可以很容易地在前景和背景之间交换。
非子shell 不会互动。例如,如果我输入
(echo $$ $BASHPID $-)
到名为 gash.sh
的脚本中,然后从非交互式 shell:
$ bash gash.sh
73879 73880 hB
但是如果我获取文件,那么它是交互式 shell:
的子shell$ . ./gash.sh
1130 himBH