退出未在脚本中执行

时间:2016-07-27 15:22:03

标签: bash shell terminal

date
ls
exit

执行此脚本时,会执行命令datels,但终端不会关闭。为什么呢?

1 个答案:

答案 0 :(得分:1)

该脚本将仅退出正在运行的shell。当您执行./abc时,父shell会分叉并执行运行./abc的子shell。 关于 subshel​​l 退出更为明显,请考虑以下示例:

#!/bin/bash

echo hi
(exit)
echo hello

打印hihelloexit发生在子shell中。因此,脚本不会退出,因此最后echo hello会被执行。

要查看脚本本身是否退出,请尝试

#!/bin/bash

echo hi
exit
echo hello

运行此脚本将输出“hi”; exit命令在到达echo hello之前终止脚本(但不会终止在终端中运行的shell)。