2010-10-09 3 views
3

Я пытаюсь создать небольшой скрипт для запуска моей среды разработки. Для этой задачи я пытаюсь открыть терминал gnome с несколькими вкладками, где автоматически запускается сервер rails и автотест. НоОткрыть терминал gnome программно и выполнить команды после выполнения bashrc

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

не работает ("Ошибка при создании дочернего процесса"). Также

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

не работает. Любые предложения по решению этой проблемы?

ответ

13

Вот хороший трюк, мы работали на Superuser

  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"'

@Gilles: Спасибо е или это решение!

+0

Попробуйте '-e 'env BASH_POST_RC = \" rails server \ "bash'' для более короткой версии. Сделайте то же самое для второго аргумента '--tab -e'. –

+0

У меня была аналогичная проблема и я попробовал вашу технику. Это сработало. Спасибо. Я заметил, что строка comnmand не попадает в терминал или в историю. Есть ли способ сделать это? – Steve

+0

Я пробовал несколько минут в Google. Что означает переменная BASH_POST_RC? – Steve

1

Удар в темноте: создайте сценарии оболочки для каждой команды, которую вы хотите запустить на вкладке, сделайте их исполняемыми и вызовите их по абсолютному пути, например. поставить это в /home/zardoz/bin/railsstart

#! /bin/sh 
exec rails server 

chmod +x, а затем сделать

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

Если это не сработает, следующая вещь, которую я хотел бы попробовать торчит strace -f -o /tmp/trace.log на начало команды, позволяя ей неудачу , а затем выкапывать через trace.log, чтобы узнать, какой системный вызов действительно не удалось и почему (там будет огромное количество нежелательной информации - прочитайте с конца назад и посмотрите на все капитализированные кодовые фразы, начиная с E, например, «ENOEXEC») , «ENOENT», «EPERM», что-то типа.)

EDIT: Вот как вы тянете во всех .bashrc настройки в одном из этих сценариев:

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

Внимание: возможно, потребуется настроить .bashrc так, что он не делает некоторые вещи, что только работа в «реальном» сеансе интерактивной оболочки. Не беспокойтесь об этом, если вы не получите странных ошибок до начала рельсов.

+0

Этот подход имеет те же недостатки, что и мой второй оператор гнома-терминала. Он действительно пытается запустить «сервер rails» на этой вкладке, но не делает этого, потому что он не может найти команду «rails». Эта команда присутствует только при корректном вызове .bashrc перед выполнением. И это не так, когда вы выполняете команды с помощью gnome-terminal -e. – Zardoz

+0

Попробуйте использовать скрипт-оболочку для запуска '.bashrc', затем - см. Править. – zwol

0

Я предполагаю, что ошибка возникает из-за того, что PATH не установлен в то время, когда гном-терминал пытается запустить рельсы.

Почему бы вам не использовать полный путь к серверу rails или создать скрипт, который устанавливает переменную PATH?

+0

Есть еще некоторые проблемы. Я использую RVM для настройки всей среды Ruby. И RVM настроен в .bashrc. Поэтому я должен убедиться, что gnome-terminal -e «command» сначала выполняет .bashrc, а затем команду. – Zardoz

+0

Я не думаю, что понимаю вашу проблему =/Вы можете использовать gnome-terminal для выполнения нескольких команд в определенном порядке. Вероятно, разделение команд с; будет работать, и вы можете использовать -x для выполнения остальной части строки, если нет. У меня что-то не так? – slezica

0

Уже ответил, но на всякий случай, проверьте this gem, который автоматизирует терминал на настольных компьютерах KDE, OSX и Gnome.

0

для ubuntu 16.04

пресс Ctr+Shift+T

это откроет новую вкладку в том же окне. кроме того, рядом с правой вкладкой появится кнопка добавления дополнительных вкладок.

Смежные вопросы