date
ls
exit
执行此脚本时,会执行命令date
和ls
,但终端不会关闭。为什么呢?
答案 0 :(得分:1)
该脚本将仅退出正在运行的shell。当您执行./abc
时,父shell会分叉并执行运行./abc
的子shell。
关于 subshell 退出更为明显,请考虑以下示例:
#!/bin/bash
echo hi
(exit)
echo hello
打印hi
和hello
。 exit
发生在子shell中。因此,脚本不会退出,因此最后echo hello
会被执行。
要查看脚本本身是否退出,请尝试
#!/bin/bash
echo hi
exit
echo hello
运行此脚本将输出“hi”; exit命令在到达echo hello
之前终止脚本(但不会终止在终端中运行的shell)。