6

I am trying to open a terminal and run a command in it. I am using

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

This opens up a new terminal, but the command is not executed.

zondo
  • 19,901
  • 8
  • 44
  • 83
user3571631
  • 821
  • 3
  • 8
  • 19

3 Answers3

7

The exec command replaces the currently running process with a new one, so if you have an exec in a list of commands to run, as soon as exec is run, nothing else will run. So you're replacing 'bash -c \"exec bash; MY_COMMAND; exec bash\" ' with bash, and then nothing after the exec bash is running. Try this instead:

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

or if you need a terminal to stay open, try this:

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

of if you want the terminal to stay open and be in a bash shell, try this:

os.system("gnome-terminal -e 'bash -c \"MY_COMMAND; bash\" '")
Christopher Shroba
  • 7,006
  • 8
  • 40
  • 68
6

Here we go...

command="python3 --version"
os.system("gnome-terminal -e 'bash -c \""+command+";bash\"'")

That should do it...

Output:Python 3.6.4

And the output came into a new terminal....

Community
  • 1
  • 1
Subham Debnath
  • 689
  • 8
  • 9
1

How to open and close that terminal after running the command

You can run this command in python file

os.system("gnome-terminal -e 'bash -c \"sudo -S <<< Notadmin apt-get update && exit; exec bash\"'")

In this command, we have multiple parameters

  1. It will open a terminal first.
  2. it will run simple and sudo commands as well.
  3. after installing it will close automatically.

I m using Ubuntu 20.04 and using this command in my API. and it works fine.

**sudo -S <<< Notadmin apt-get update**
  • -S this parameter to read password 'Notadmin' is my system password

This will work without sudo

os.system("gnome-terminal -e 'bash -c \"pip install python && exit; exec bash\"'")
Tanveer Ahmad
  • 706
  • 4
  • 12