2016-04-14 56 views
-1

我在一个脚本中发出“退出”命令,这个脚本就像“退出”一样,但会关闭正在运行的bash终端。 我知道该怎么做退出的唯一方法是:任何方式从任何地方退出bash终端,但不退出脚本?

exit 

但没有任何好处 - 它只是需要它作为脚本退出,而不是bash的终端会话。

+0

“ctrl-d”太难输入了吗? –

+0

什么?我很困惑,无论你在哪个目录下,你都可以退出一个shell。你正在试图做什么,创建一个退出会话的命令,即使你在后台有进程?如果是这样,那么男人'不行'。另外,这与vim有什么关系? – SaintHax

+0

我在bash(在vim MODE中)编写脚本,所以当我输入quit而不是exit时,它会做几乎相同的事情。 –

回答

0

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

+0

好的,我会试试这个。 –

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。这使您能够终端,并在稍后停止的地方回到运行的过程。如果你想要做的就是运行一个脚本,然后退出尝试使用附加到你想运行IE

script & 
exit 

,这将会使铬运行,但让你卸下它,它也不会关闭脚本的符号当你关闭终端时。您也可以在后台管理任务。看看man jobs

script & 
jobs 

您可以使用命令,如fg 1把作业号1回前景等

0

你可以尝试执行该命令,就像你是一个壳proccess:

execp("exit",NULL,NULL); 
+0

好的,我会试试这个。 –