你是如何运行脚本的?子进程退出的情况不应该影响运行它的
shell …除非您将脚本提供给正在运行的shell.
例如…
./my-script.sh # this should terminate and leave your shell intact . my-script.sh # this might terminate and take your shell with it
‘nix shell是一些shell解释器的运行过程(例如,bash,ksh,csh). “源”一个脚本(您可以使用命令源或其别名在bash中执行.)告诉解释器打开指定的文件并处理其内容.实际上,该脚本成为以交互方式输入命令的快捷方式.定义的函数,变量集和(在您的情况下)退出处理在原始shell中生效.
./my-script.sh是一个简单的文件路径. ./将当前目录和my-script.sh引用到该目录中的脚本.当文件标记为可执行文件时,将执行该文件.对于脚本,这意味着启动一个新的解释器进程(由脚本顶部的#!行定义,或默认为/ bin / sh)并使用它来解释脚本.定义的函数,变量集和退出处理仅限于新的解释器进程.