2017-04-10 362 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\" '")