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

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

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

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

Ошибка (для spork и автотеста):

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

Удивительно он работает для 'rails s' (на вкладке показан работающий сервер).

Есть идеи?

16
задан 3 April 2013 в 20:27

3 ответа

Ниже ответ от , 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"'

9
ответ дан 3 April 2013 в 20:27

Вызов 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 и взгляд на профили и будет маркером на том, который Вы в настоящее время используете:

enter image description here

Пойдите, чтобы Представить предпочтения для получения дополнительной информации и проверить название профиля.

Для получения дополнительной информации посмотрите man gnome-terminal и страницы справочника Ubuntu онлайн.


Примечание:

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

Как пример:

#!/bin/bash
cd $HOME/.rvm/gems/ruby-2.0.0-p0/bin 
spork
exit 0

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

15
ответ дан 3 April 2013 в 20:27

gnome-terminal --tab -- sh -c "python3 'test.py' ; bash"

этот код открывает новую вкладку в терминале, запускающем скрипт Python и когда, эта новая вкладка не закроется, потому что я добавил 'удар' в конце этого кода...

, если Вы хотите это многократно, поместите его в некоторое время цикл в Вашем сценарии

удара
0
ответ дан 14 October 2019 в 14:53

Другие вопросы по тегам:

Похожие вопросы: