Відкриття декількох вкладок з gnome-terminal


16

Я намагаюся створити команду, яка відкриє 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"

Помилка (для спорту та автотесту):

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

Дивно, але це працює для 'rails s' (на вкладці показано, як працює сервер).

Будь-які ідеї?

Відповіді:


9

Нижче наведено відповідь від 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"'


15

Викликати 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та перегляньте профілі, і на тому, яким ви зараз користуєтесь, з’явиться маркер:

введіть тут опис зображення

Перейдіть у розділ Налаштування профілю для отримання додаткової інформації та перевірте ім'я профілю.

Для отримання додаткової інформації дивіться man gnome-terminalта веб- сторінки Ubuntu в Інтернеті .


Примітка :

Якщо у вас виникли проблеми із запуском програм 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командному рядку вище. Зробіть це для всіх проблемних програм, які не є репо.


Як мені знати профіль? (Я спробував за замовчуванням, моє ім’я користувача та ~ / .profile)
Мануель,

Він говорить за замовчуванням, але я отримую ту ж помилку, використовуючи --tab-with-profile = Типово
Мануель

@Manuel Інша можливість полягає в тому, що цільові команди знаходяться не у вашому $PATH; вкажіть місце sporkта інші з абсолютним шляхом.

Команда, яку я використовую, є gnome-terminal --tab --title = "rails s" -e "rails s" --tab-with-profile = Типово --title = "spork" -e "spork" - tab-with-profile = Типово --title = "autotest" -e "autotest" (скопіюйте / вставте зі своєї відповіді). Про $ PATH, якщо це проблема, то чому він працює на вкладці, відкритій через меню?
Мануель

@Manuel Як ви говорите у своєму запитанні, вам потрібно перейти в "папку додатків" і запустити їх звідти, а це означає, що вони не входять $PATH. Метод у відповіді - це той, який я використовую для запуску всіх встановлених репозиторіями програм командного рядка на різних вкладках в одному gnome-terminalвікні, і він завжди працює, оскільки ці інші програми знаходяться в $ PATH.

0

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

цей код відкриє нову вкладку в терміналі, на якому працює сценарій python, і коли його закінчено, ця нова вкладка не закриється, тому що я додав 'bash' в кінці цього коду ...

якщо ви хочете його кілька разів, покладіть його на певний цикл у вашому скрипті bash

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.