退出不会导致‘过程完成’的命令?

退出不会导致‘过程完成’的命令?

我看到exit 1shell 脚本中出现“进程完成”消息,导致 shell 无响应。有没有办法使用该exit命令并返回提示符?我不想打开新会话,但我没有其他方法。

编辑:我使用,但我也.得到了相同的结果source

答案1

请参见做什么source

source是 bash shell 内置命令,用于执行作为参数传递的文件内容,在当前 shell 中.。它在(句号)中有一个同义词。

exit在源脚本中执行 会使当前 shell 退出,就像您输入 一样exit。要执行源脚本的脚本永远不应是exit其主 shell(即不是子 shell),因为其主 shell 是您从中执行源脚本的 shell。除非您知道自己在做什么,并且exit源脚本确实是您想要的。

您可以return从源脚本中获取。如果您需要获取脚本,那么return 1可能是正确的选择exit 1

不应引用的脚本不应引用。如果它exit在主 shell 中调用,则很可能是执行. 另一个有用的链接:.在 bash 中获取文件(或source)和执行文件有什么区别?

那么如何执行呢?

命令bash scriptname将运行一个单独的bash进程,该进程将解析scriptname并执行其行。如果有,exit则它将退出单独的进程bash,而不是您当前的 shell。

为了能够直接执行脚本(例如./scriptname而不是bash scriptname),您需要一个适当的shebang作为脚本的第一行,例如:

#!/bin/bash

并且该文件需要是可执行的(chmod +x scriptname),并且保存该文件的文件系统不能使用noexec选项挂载。

相关内容