Мені потрібно відкрити кілька вкладок терміналів, дати їм заголовки, перейти в каталог і зробити так, щоб кожна вкладка виконувала команду.
Я новачок у скриптах для 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 \ ""), вона відкриє вкладки у вказаному каталозі та назве їх без помилок.
-Редагувати-1:
Після застосування @Tuknutx відповіді нижче та редагування сценарію, помилка більше не з’являється, але це дає мені bash: rails c: command not found
і rails s
створює нову програму rails замість запуску сервера рейлів, я використовую .rmvrc для вибору гемсета після доступу до цієї папки. .
cmds[1]="'ping 192.168.9.9'"
це дає мені ту ж помилку, але я вирішив її, видаливши одну пропозицію. Тож якщо я напишу, cmds[1]="ping 192.168.9.9"
це працює.
tab=" --tab-with-profile=Default"
??