我正在尝试编写一个简单的脚本(对于嵌入式系统),它从网络上安装一个外部文件,然后在命令行上调用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!
答案 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