Question

I try to build a little script to start my development environment. For that task I try to open a gnome terminal with several tabs where automatically the rails server and autotest is started. But

gnome-terminal --tab -e "rails server" --tab --tab

does not work ("error creating the child process"). Also

gnome-terminal --tab -e "bash -c \"rails server\"" --tab --tab` 

does not work. Any suggestions how to solve that problem?

Was it helpful?

Solution

Here is a nice trick we worked out at Superuser

  1. Add a eval "$BASH_POST_RC" to the end of your .bashrc

  2. Set the BASH_POST_RC environment variable for each tab to that command you like to execute, e.g.: gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'

@Gilles: Thanks for that solution!

OTHER TIPS

Stab in the dark: create shell scripts for each command you want to run in a tab, make them executable, and invoke them by absolute path, e.g. put this in /home/zardoz/bin/railsstart

#! /bin/sh
exec rails server

chmod +x it, and then do

gnome-terminal --tab -e /home/zardoz/bin/railsstart --tab --tab ...

If that doesn't work, the next thing I would try is sticking strace -f -o /tmp/trace.log on the beginning of the command, letting it fail, and then digging through trace.log to find out which system call actually failed and why (there'll be a tremendous amount of junk in there - read from the end backward and look for all-capitalized code phrases starting with E, like "ENOEXEC", "ENOENT", "EPERM", sort of thing.)

EDIT: Here's how you pull in all the .bashrc settings in one of these scripts:

#! /bin/bash
. ~/.bashrc
exec rails server

Caution: you may need to adjust your .bashrc so that it doesn't do certain things that only work in a "real" interactive shell session. Don't worry about this unless you get strange errors before rails starts.

I'm assuming the error arises because PATH is not set at the time gnome-terminal tries to run rails.

Why not use the full path to the rails server, or create a script that sets the PATH variable?

Already replied, but just in case, check out this gem that automates the terminal on KDE, OSX and Gnome desktops.

for ubuntu 16.04

press Ctr+Shift+T

this will open a new tab in the same window. additionally a button for adding more tabs will appear next to the right most tab.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top