Я уверен, что это не должно быть так сложно, как я нахожу!
Когда я вхожу в свою машину, я хочу, чтобы она запускала оболочку bash в заданном каталоге, открывала и называла некоторые вкладки и запускала процесс в каждой из них.
Я думаю, что если я поставлю
cd ~/xxx/xxx/xxx
в .bashrc, а затем автозапустите оболочку bash с чем-то вроде
gnome-terminal --tab -e "bash -c 'rails s'" --tab -e "bash -c 'spork'" --tab -e "bash -c 'autotest'" --tab -e "bash -c 'rails c'" --tab -e 'tail -f log/development.log'
он должен работать
Это не так - я получаю: «Произошла ошибка при создании дочернего процесса для этого терминала. Не удалось выполнить дочерний процесс rails» (Нет такого файла ...
rails находится в пути - как в корневом каталоге, так и в каталоге назначения, и указание полного пути не помогает - окно терминала не открывается.
Обновление: причина, по которой это не работает должным образом, заключается в том, что bashrc не изменяет рабочий каталог до тех пор, пока не будут выполнены команды для запуска процесса. (я могу это увидеть, если сделаю tab -e 'pwd')
Итак, вопрос в том, как мне сменить каталог, а затем запустить процессы?
Есть очень хорошее решение по адресу:
Цитируется по ссылке:
Вот хороший трюк, который мы разработали в Superuser
Добавьте eval "$ BASH_POST_RC" в конец вашего .bashrc
Установите переменную среды BASH_POST_RC для каждой вкладки на ту команду, которую вы хотите выполнить, например: gnome-terminal --working-directory = "/ home / zardoz / projects / my_rails_app" --tab -e 'bash -c "export BASH_POST_RC = \ "рельсовый сервер \"; exec bash "'--tab -e' bash -c" export BASH_POST_RC = \ "autotest \"; exec bash "'
@Gilles: Спасибо за это решение!
Используя эту идею, я создал следующий сценарий bash.
gnome-terminal --working-directory = "/ home /"ПОЛЬЗОВАТЕЛЬ/ rails_projects /ПРОЕКТ"--tab --title = Терминал --profile = Rails --tab --profile = Rails --title = Console -e 'bash -c" export BASH_POST_RC = \ "консоль rails \"; exec bash "'--tab --profile = Rails --title = Guard -e' bash -c" export BASH_POST_RC = \ "охрана \"; exec bash "'--tab --profile = Rails --title = Server -e' bash -c" export BASH_POST_RC = \ "rails server \"; exec bash "'--tab --profile = Rails --title = Tail -e' bash -c" export BASH_POST_RC = \ "tail -f log / development.log \"; exec bash "'
.bashrc
не вызывается, когда bash
позвонил с -c
параметр.
Вместо этого вы можете обернуть вызов gnome-terminal
в сценарии, который делает cd
первый. Некоторым это нравится:
#!/bin/bash
cd ~/xxx/xxx/xxx
gnome-terminal --tab -e "bash -c 'rails s'" --tab -e "bash -c 'spork'" --tab -e "bash -c 'autotest'" --tab -e "bash -c 'rails c'" --tab -e 'tail -f log/development.log'