open terminal run command python
Question:
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.
Answers:
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" '")
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….
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
- It will open a terminal first.
- it will run simple and sudo commands as well.
- 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"'")
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.
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" '")
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….
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
- It will open a terminal first.
- it will run simple and sudo commands as well.
- 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"'")