Мне нужно открыть несколько вкладок терминала, дать им названия, перейти в каталог и заставить каждую вкладку запускать команду.
Я новичок в Linux и сценариях оболочки, после поиска в Интернете и проверки некоторых решений, я создал этот сценарий ( РЕДАКТИРОВАНИЕ на основе ответов ниже):
#!/bin/bash
cd /media/Extra/Project
tab=" --tab-with-profile=Default"
options=(--tab --title=Terminal)
cmds[1]="'rails s'"
titles[1]="Server"
cmds[2]="'rails c'"
titles[2]="Console"
for i in 1 2; do
options+=($tab --title="${titles[i]}" -e "bash -c \"${cmds[i]} ; bash\"" )
done
gnome-terminal "${options[@]}"
exit 0
Он открывает вкладки, называет их имена, но не может выполнить команды, генерирующие эту ошибку:
При создании дочернего процесса для этого терминала произошла ошибка
Другим недостатком является то, что если я остановил запущенную команду, она закроет вкладку, которая мне не нужна. Мне нужно иметь возможность остановить команду и запустить ее снова на той же вкладке.
Что не так со сценарием? Есть ли еще один простой способ сделать это?
Примечание. Если я удалил часть (-e "\" bash -c $ {cmds [i]}; bash \ "") из команды, он откроет вкладки в указанном каталоге и назовет их без ошибок.
-Edit-1:
После применения ответа @Tuknutx ниже и редактирования скрипта ошибка больше не появляется, но она дает мне bash: rails c: command not found
и rails s
создает новое приложение rails вместо запуска сервера rails, я использую .rmvrc, чтобы выбрать gemset при доступе к этой папке ,
cmds[1]="'ping 192.168.9.9'"
это дает мне ту же ошибку, но я решил ее, удалив одинарные кавычки. Так что, если я напишу, cmds[1]="ping 192.168.9.9"
это работает.
tab=" --tab-with-profile=Default"
??