Открытие нескольких вкладок с помощью gnome-terminal

14

Я пытаюсь создать команду, которая откроет 3 службы из стека Rails, rails s, spork и autotest. Я могу выполнить эти команды индивидуально, открыв 3 терминала, перейдя в папку приложения и запустив их. Я могу даже открыть 3 новые вкладки и запустить команды на каждом.

Проблема в том, что они терпят неудачу, когда я пытаюсь открыть вкладки через gnome-terminal следующим образом:

gnome-terminal --tab --title="rails s" -e "rails s" --tab --title="spork" -e "spork" --tab --title="autotest" -e "autotest"

Ошибка (для spork и autotest):

There was an error creating the child process for this terminal
Failed to execute child process "spork" (No such file or directory)

Удивительно, но это работает для «рельсов s» (вкладка показывает, что сервер работает).

Любые идеи?

    
задан Manuel 03.04.2013 в 18:27
источник

2 ответа

8

Ниже приведен ответ из stackoverflow.com

  1. Добавьте eval "$BASH_POST_RC" в конец вашего .bashrc

  2. Задайте переменную окружения BASH_POST_RC для каждой вкладки той команде, которую вы хотите выполнить, например: 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"'

ответ дан green 03.04.2013 в 23:38
источник
13

Вызов gnome-terminal три раза и написание команд вместе с && не будет работать, а вкладки не будут отображаться на одном и том же терминале, и вам действительно придется выйти из первый вывод для следующего отображения.

Чтобы убедиться, что все ваши вкладки открыты в одном экземпляре gnome-terminal , в то же время нужно использовать переключатель --tab-with-profile=PROFILENAME . В приведенной ниже команде вы можете оставить первую команду как gnome-terminal --tab , так как это первое окно, которое будет сгенерировано; теперь все, что вам нужно знать, это тот профиль, который вы используете, и вы можете использовать --tab-with-profile=YourProfile для вызова других команд, и все они будут отображаться сразу в открытом терминале.

Здесь ваша команда изменена:

gnome-terminal --tab --title="rails s" -e "rails s" --tab-with-profile=Default --title="spork" -e "spork" --tab-with-profile=Default --title="autotest" -e "autotest"

(Для будущих читателей: замените имена программ, заданные после -e , чтобы проверить приведенную здесь командную строку; помните, что ваши цели для -e должны быть установлены и в $PATH ; для вещей, не входящих в $PATH , используйте абсолютный путь, такой как, например, /opt/mike/program )

Не забудьте указать фактический профиль, который вы используете для переключателей --tab-with-profile . Первый вызов gnome-terminal должен использовать --tab и все остальные --tab-with-profile . С помощью этого метода должно быть возможно открыть большое количество вкладок в одном экземпляре gnome-terminal .

Найдите профиль, который вы используете в данный момент, щелкнув правой кнопкой мыши в gnome-terminal и просмотрите профили, и будет отображаться маркер в том, который вы используете сейчас:

Перейдитевраздел«Настройкипрофиля»дляполучениядополнительнойинформацииипроверкиименипрофиля.

Дляполучениядополнительнойинформациисм.mangnome-terminalи Ubuntu manpages online .

Примечание

Если у вас возникли проблемы с запуском ваших программ с gnome-terminal , добавьте местоположение в $PATH или создайте символическую ссылку и поместите ее в папку $PATH или (что здесь очень полезно): создайте простой bash и вызвать это в командной строке gnome-terminal выше. (Вы должны называть его абсолютным путем: т. Е. /location/of/script , а не только его имя.)

В качестве примера:

#!/bin/bash

cd $HOME/.rvm/gems/ruby-2.0.0-p0/bin 
spork

exit 0

Затем назовите сценарий, сделайте его исполняемым и вызовите его в командной строке gnome-terminal выше. Сделайте это для всех нерепо-программ, которые являются проблематичными.

    
ответ дан user76204 03.04.2013 в 18:53