从shell脚本中调用“exit”

时间:2013-06-03 15:34:00

标签: bash shell

我正在尝试编写一个简单的脚本(对于嵌入式系统),它从网络上安装一个外部文件,然后在命令行上调用exit(它从busybox终端退出并从系统引导系统)新安装的根目录)。问题是,当我从shell脚本调用exit时,它退出脚本,而不是外部终端。关于如何在脚本外发送exit命令的任何提示?

我的代码看起来像这样:

#!/bin/bash
mount /mnt/root 1.2.3.4:/path/to/external/files -o nolock
exit   # exits the script, not the outside filesystem!

2 个答案:

答案 0 :(得分:3)

exit确实退出了当前的shell。但是,运行该脚本会创建一个新进程,而该进程是退出的,而不是从中调用该脚本的shell。

您可能只想简单地获取文件:

$ source myScript.sh

然后myScript.sh在当前shell中执行,而不是在生成的进程中执行,exit将从当前shell(以及终端本身)退出。

答案 1 :(得分:1)

如果您希望脚本退出外部终端,请按以下方式调用它:

source your_script

或只是

. your_script

其中.source命令相同。如果您需要更多信息,可以关注this article


说明:source将执行当前 shell中的脚本,因此退出将由当前shell解释 - 什么将关闭伪(!)终端窗口,如果shell是树中的第一个shell