2015-10-22 4 views
0

Я пытаюсь написать скрипт, который устанавливает свою среду программирования, взяв в качестве аргумента имя проекта (каталог) Я хочу, чтобы открытьОткрыть гном-терминал из сценария оболочки и держать окно открытым

так например: ./my_script.sh sample_app

А вот сценарий до сих пор:

#!/bin/bash 

wmctrl -s 0 
sublime & 
sleep 2 

wmctrl -s 1 
google-chrome & 
sleep 2 

wmctrl -s 2 
Dir="$echo /home/biTNumb/Projects/ruby/workspace/$1" 
echo $Dir 
gnome-terminal --window-with-profile=Guard -e ls & 
#gnome-terminal -e cd /home/biTNumb/Projects/ruby/workspace/$1 && bundle exec guard & 
#gnome-terminal -e cd /home/biTNumb/Projects/ruby/workspace/$1 && rails s & 

проблема возникает тогда, когда сценарий выполняет:

gnome-terminal --window-with-profile=Guard -e ls & 

Я получаю сообщение The child process exited normally with status 0.:

The child process exited normally with status 0.

Я не могу использовать терминал после того, как (я могу только закрыть его), а сообщение скрывает какую-то часть продукции. И тем не менее, я уже создал профиль и установить Когда команда выходит выпадающее меню для «Держите терминал открытым» ...

** Я оставил комментарии в сценарии, так что вы можете получить идея о том, что я пытаюсь сделать

+0

Unrelated к главной проблеме, но этот 'Dir =" $ эхо/дома/biTNumb/Проекты/рубина/рабочее пространство/$ 1 "' не совсем корректен, но не мешает вам, потому что переменная '$ echo' не имеет значения. Если бы это произошло, то '$ Dir' был бы установлен неправильно. Удалите '$ echo' из этого назначения. Также цитируйте '' $ Dir'', когда вы его используете. –

+1

Что вам нужно сделать для выполнения 'ls'? Покажите вам вывод из 'ls' и оставьте мертвое окно? И вы установили эту настройку в профиле 'Guard'? –

+0

@EtanReisner Я заметил, что без использования «echo» я не могу использовать специальный символ «*» с именем в виде ярлыка – theonastos

ответ

0

для выполнения нескольких команд в одной и той же гном-терминала окна, используйте точку с запятой ; в качестве разделителей, как показано ниже:

gnome-terminal -- bash -c "command 1; command 2; ...; bash;" 

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

Таким образом, вам не нужно будет определить профиль с опцией Держите терминал открытого когда команда выходит, и вы не получите сообщение The child process exited with status 0 (что скрывать некоторые части вывода).

Вот то, что вы могли бы написать (я использую обратную косую черту \ разделить строки):

gnome-terminal -- bash -c \ 
" ls ;\ 
cd /home/biTNumb/Projects/ruby/workspace/$1 && bundle exec guard ;\ 
cd /home/biTNumb/Projects/ruby/workspace/$1 && rails s;\ 
$bash;"  
Смежные вопросы