I created a bash script that opens several gnome-terminals, connect to classroom computers via ssh and run a script.
How can I avoid that the gnome-terminal closes after the script is finished? Note that I also want to be able to enter further commands in the terminal.
Here is an example of my code:
gnome-terminal -e "ssh root@<ip> cd /tmp && ls"
As I understand you want gnome-terminal to open, have it execute some commands, and then drop to the prompt so you can enter some more commands. Gnome-terminal is not designed for this use case, but there are workarounds:
$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
The exec bash
at the end is necessary because bash -c
will terminate once the commands are done. exec
causes the running process to be replaced by the new process, otherwise you will have two bash processes running.
rcfile
which runs your commandsPrepare somercfile
:
source ~/.bashrc
echo foo
echo bar
Then run:
$ gnome-terminal -e "bash --rcfile somercfile"
Prepare scripttobash
:
#!/bin/sh
echo foo
echo bar
exec bash
Set this file as executable.
Then run:
$ gnome-terminal -e "./scripttobash"
Alternatively you can make a genericscripttobash
:
#!/bin/sh
for command in "$@"; do
$command
done
exec bash
Then run:
$ gnome-terminal -e "./genericscripttobash \"echo foo\" \"echo bar\""
Every method has it's quirks. You must choose, but choose wisely. I like the first solution for its verbosity and the straightforwardness.
All that said, this might be of good use for you: http://www.linux.com/archive/feature/151340