有没有办法从任何地方退出bash终端但不退出脚本?

时间:2016-04-14 16:39:57

标签: linux bash vim vi

我在一个脚本中执行“quit”命令,它将像“退出”一样,但会关闭正在运行的bash终端。 我知道如何戒烟的唯一方法是:

exit

但这没有用 - 它只是将其作为脚本的退出,而不是bash终端会话。

3 个答案:

答案 0 :(得分:0)

您可以尝试通过使用top命令然后kill #ID查找进程ID来终止bash进程。这可以结束bash会话并使脚本保持运行。

答案 1 :(得分:0)

听起来你正试图从你所在的shell中分离一个脚本。如果你想从脚本本身中分离shell,你可以有效地分叉它,即。

#!bin/bash
forked_function() {
  # This will now be in it's worn process. Check it using 
  # ps ax | grep forked_function
  sleep 1000;
}
forked_function &

一种非常常见的方法是使用screen。这使您能够close终端,并在您离开的地方稍后返回正在运行的进程。如果你要做的就是运行一个脚本然后退出尝试使用附加到你试图运行的脚本的&符号,即

script &
exit

这将使chrome运行但允许您将其分离,因为当您关闭终端时它不会关闭。您还可以在后台管理任务。看看man jobs

script &
jobs

您可以使用fg 1之类的命令将作业编号1带回前台等。

答案 2 :(得分:0)

你可以尝试执行该命令,就像你是一个shell进程一样:

execp("exit",NULL,NULL);