how can I open a extra console and run a program in it with one command?

So I know if I type gnome-terminal or xterm, a new window will be popped out. Then I checked the man page for these two, nothing relevant found.

Then I noticed under Mac you can do it with the program open. But it seems under Linux it's not that trivial.

Does anyone have experience?


Update: The -x/-e syntax is now deprecated - Ubuntu 18.04. The new recommended way is :

gnome-terminal -- bash -c "<my command or script>; exec bash"
  • If you want to reach the users home directory within the above command use the environment variable $HOME: bash -c "cd $HOME/; ..."

I would prefer to use the option -x that provides more reliable work than -e:

gnome-terminal -x bash -c "<my command or script>; exec bash"
  • The option -x means --execute - the remainder of the command line inside the terminal.

  • And our command is bash -c "<commands>". That means we execute a new bash shell, which should run some -c "<commands>".

  • We have two separated (by semicolon ; == new line) <commands>.

  • The first command <my command or script> will execute that we want.

  • The second command exec bash has a meaning - remain open the current gnome-terminal window. There are another possible approaches to do that. In the current case the command exec will replace the current process image with a new process image - in other words it will 'kill' the current process and will execute a new (bash) under the current PID.


More examples of usage of this format:

  • Open a new terminal and source scripts
  • Launch gnome-terminal from SSH session to Desktop session
  • Start Specific Terminal on Startup
  • Crontab and C program that should be executed into a terminal window
  • Xdotool does not minimize terminal window when using in Startup Application when pc boots?

gnome-terminal -e cmd will open a terminal window and run cmd within it.


You can simply do CTRLALTT and you will open a new terminal.

Try gnome-terminal -e "bash -c command;bash"


Another approach that will keep the window open is to use xterm:

xterm -hold -e cmd

The hold option keeps the window open.