2017-04-10 359 views
0

我想打开一个终端并在其中运行一个命令。我正在使用打开终端运行命令python

os.system("gnome-terminal -e 'bash -c \"exec bash; MY_COMMAND; exec bash\" '") 

这会打开一个新终端,但该命令不会执行。

+4

为什么你用'exec bash'围住你的命令? – zondo

+2

你需要在终端上运行这个吗?那么子进程python模块呢? –

+0

@zondo它使终端在执行后保持打开状态 – user3571631

回答

2

exec命令替换当前正在运行的进程,因此如果您在要运行的命令列表中有一个可执行文件,只要运行exec,就不会运行任何其他命令。因此,您将用bash代替'bash -c \"exec bash; MY_COMMAND; exec bash\" ',然后在exec bash正在运行后没有任何结果。试试这个:

os.system("gnome-terminal -e 'bash -c \"MY_COMMAND\" '") 

,或者如果你需要一个终端保持开放,试试这个:

os.system("gnome-terminal -e 'bash -c \"MY_COMMAND; sleep 1000000\" '") 
如果你想在终端保持开放,并在bash shell的

,试试这个:

os.system("gnome-terminal -e 'bash -c \"MY_COMMAND; bash\" '")