Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to open a command terminal in Linux?

I want to open the terminal (command prompt) on a Linux machine using Java code. I know how to open command prompt in windows.The following code i have used in windows

String command= "cmd c/start cmd.exe"
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);

I need the same thing in Linux.

Thanks for your answers. I would like to run a sh script also.

Whether the following code works.

String command= "usr/bin/xterm myshell.sh";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
like image 838
user48094 Avatar asked Feb 28 '09 11:02

user48094


3 Answers

In Linux, there are a number of terminal emulators which allow you to interact with various shells. Each shell is basically a command interpreter that understands Linux commands (GNU & Unix commands is more correct I suppose...). A terminal emulator provides an interface (window) for the shell and some other facilities for using the command prompt. To open a terminal window, you just have to modify your command string like this:-

import java.io.*;

class TerminalLauncher
{
    public static void main(String args[]) throws IOException
    {
        String command= "/usr/bin/xterm"; 
        Runtime rt = Runtime.getRuntime();  
        Process pr = rt.exec(command);
    }
}

The basic assumption I have made is that you want to open xterm, which is available on almost any system (with X installed of course). You might want to open another terminal emulator like rxvt, eterm, aterm, gnome-terminal or konsole. The command string can also be modified to use different shells like zsh. I suggest you catch an exception in case the terminal you chose isn't present and handle it by asking the user to install it. A better solution is to accept command line arguments for the users preferred shell or to use a configuration file which the user can change to make your script open the shell of his/her choice.

Note
1. As others have already pointed out, xterm (or any other terminal of your choice) may not be in the path specified (/usr/bin/...) and may not even be installed, so you might have to use some fancy command string (Ex: pipelining find through grep to get the path to xterm before launching), which isn't such a great idea. I think the best way is to let the user configure the whole thing.

2.I got a comment on this answer (by ypnos), suggesting that I avoid using absolute paths and rather rely on the command being in the PATH environment variable. I have to say I agree. In that case, the command string should be -

String command = "xterm"

Do look at the comment, because it also points out the problem with using find.

like image 121
batbrat Avatar answered Oct 12 '22 18:10

batbrat


There's no single standard "terminal" command on Linux - the ones available depend on which GUI is present (i.e. whether KDE, or Gnome, etc).

You should be able to rely on xterm being present, but on modern Linux variants that's not the terminal of choice:

String command= "/usr/bin/xterm";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);

Of course, "xterm" might not be in that particular path...

like image 28
Alnitak Avatar answered Oct 12 '22 17:10

Alnitak


Under Gnome, it's gnome-terminal.

Under KDE, it's konsole.

Or you could use the more generic terminal program xterm.

You'll probably want to use options with most of this, so look up the man pages for the one you want.

like image 39
paxdiablo Avatar answered Oct 12 '22 17:10

paxdiablo