I have an automated test that I run with the xterm -e command:

xterm -e  RunMyTests

At the end of the test-run, it prints out a summary of the results and some statistics to stdout.

I'd like to have the xterm remain open and visible so I can check the results.
(if its inactive, that's fine, so long as I can see it)

I know I could manually start the xterm then run the tests there.
Or I could redirect the test-output to a file to be examined later.
Or I could run the tests in the current xterm, instead of spawning a new window.
All of these could work, but are not ideal.

Is there a way to get an xterm window to stay open after its completed its work?

  • The problems is that there is no shell running in the xterm for it to go back to when the tests are done. I imagine there is a way to get bash to execute RunMyTests and remain open afterwards, but I can't find it off hand. Hrm.
    – user606723
    Dec 1, 2011 at 19:47
  • I don't even care if anything remains running. I just want the window to stay visible (and eventually close when I hit the 'X' button)
    – abelenky
    Dec 1, 2011 at 19:49
  • There has to be something running or the terminal will close. I am pretty sure thats just how it works.
    – user606723
    Dec 1, 2011 at 19:52
  • The command you are trying to execute doesn't make much sense: it will start a shell under the user user2, and then after the user quits that shell, it will uselessly source a .cshrc file before exiting. Did you mean so source that file inside user2's shell instead?
    – Celada
    Jun 12, 2013 at 18:10
  • Yes, I am trying to source user's .cshrc under the new user2 window. I realize the syntax might be off by a little which is why I am not able to figure it out. Thanks.
    – Anthony Navarro
    Jun 12, 2013 at 20:18

3 Answers 3


The problem is that there is no shell running in the xterm for it to go back to when the tests are done.

Try this.

xterm -e "echo hi;bash"


xterm -e "echo hi;read"
  • Thanks for an excellent answer. Simple, easy to understand, and 100% effective!
    – abelenky
    Dec 1, 2011 at 19:59

From xterm(1):

   -hold   Turn on the hold resource, i.e.,  xterm  will  not  immediately
           destroy  its  window when the shell command completes.  It will
           wait until you use the window manager to destroy/kill the  win‐
           dow,  or  if you use the menu entries that send a signal, e.g.,
           HUP or KILL.

Standard command: xterm -hold "echo I'm a boy"

Gambas Code: exec["xterm", "-hold", "-e", "ps aux"

  • 2
    The name of the option is not intuitive when searching through the man page. This is the right answer, less typing, using the features like a Superuser should. Mar 10, 2016 at 13:48
  • As usual, on a Mac, this sort of works. At least under XQuartz, the terminal stays around, but there does not appear to be a way to kill the window other than exiting XQuartz. In particular, the red dot that kills most windows does not kill the xterm window. Jan 25 at 18:08

In the case were you would normally open a terminal and then source an environment script and then continue with other commands, I found the following to work where an lxterminal is all that is available.

lxterminal -e bash -c "< path to env script \> bash --noprofile"

For instance:

lxterminal -e bash -c "/home/pi/linuxcnc-dev/scripts/rip-environment bash --noprofile"

This creates a terminal window executing bash that sources an environment script to run bash that does not overwrite the sourced environment. In the end, it's leaving the terminal open with the sourced environment, which answers the question. If you remove the first -e bash, the lxterminal hangs with no prompt.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.