Откройте новую вкладку терминала и выполните команду внутри, только после открытия вкладки - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь создать скрипт, чтобы открыть новую вкладку в моем проекте rails и запустить rails s внутри этой вкладки, чтобы уже запустить мой сервер.

Моя команда:

xfce4-terminal --tab --title="rails server" --working-directory="Documents/projects/rails_blog" --command="bash -c 'rails s';bash"

Новая вкладка открыта в правильном каталоге.
Но я всегда получаю эту ошибку:
bash: rails: command not found

Я думаю, что rails s работает до открытия новой вкладки * 1013Тег *

или --command предполагает только команды bash.Я не знаю

Почему это так?И как я могу решить эту проблему?

Я уже попробовал все эти ответы ниже:
от суперпользователя
stackoverflow - Открыть новую вкладкув gnome-терминале с помощью командной строки
из stackexchange
из ask ubuntu - открыть терминал с несколькими вкладками и запустить приложение
из askUbuntu - Как открыть несколько вкладок терминала в разных папках (рабочих каталогах)?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Следующая техника хорошо работает с новым gnome-терминалом.

(1) Это открывает новое окно терминала и выполняет «ls» и оставляет окно терминала открытым

gnome-terminal --title=newWindow \\
               -- bash -c "ls; bash"

(2) Это открывает новую вкладку в текущем gnome-терминале и выполняет'ls' на этой вкладке.

gnome-terminal --tab --title=newTab \\
               -- bash -c "ls ;bash"

Приведенные выше методы работают с GNOME Terminal 3.28.2 с использованием VTE 0.52.2 + GNUTLS -PCRE2 Обратите внимание, что старые опции gnome-терминала -e --command и -xв будущих выпусках устарели.

Предпочтительный способ выполнить команду после открытия gnome-терминала - это выполнить команду после последней пустой опции.В приведенном выше примере мы выполняем команду bash, которая, в свою очередь, принимает набор команд, которые выполняются в этой оболочке.Конечный удар необходим в первом варианте, иначе окно / вкладка закроется.

Надеюсь, это поможет.

0 голосов
/ 25 сентября 2018

Я использую tmuxinator для этого.Вы бы поместили это в директорию и затем запустили tmuxinator start project, и он запустил сеанс в tmux для вас.

# ~/.tmuxinator/project.yml

name: project
root: ~/projects/some_path

windows:
  - server: bundle && bundle exec rake db:migrate && rails s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...