Necesito abrir varias pestañas de terminal, darles títulos, ir a un directorio y hacer que cada pestaña ejecute un comando.
Soy nuevo en Linux y scripts de shell, después de buscar en línea y verificar algunas soluciones, hice este script ( EDITADO en base a las respuestas a continuación):
#!/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
Abre las pestañas, las nombra, pero no puede ejecutar los comandos que generan este error:
Se produjo un error al crear el proceso secundario para este terminal
Otra deficiencia es que si detuve el comando en ejecución, cierra la pestaña, lo que no quiero. Necesito poder detener el comando y ejecutarlo nuevamente dentro de la misma pestaña.
¿Qué tiene de malo el guión? ¿Hay otra forma más simple de hacer eso?
Nota: Si eliminé la parte (-e "\" bash -c $ {cmds [i]}; bash \ "") del comando, se abren las pestañas en el directorio dado y se nombran, sin errores.
-Editar-1:
Después de aplicar la respuesta @Tuknutx a continuación y editar el script, el error ya no aparece, pero me da bash: rails c: command not found
y rails s
crea una nueva aplicación de rails en lugar de iniciar el servidor de rails, estoy usando .rmvrc para seleccionar un conjunto de gemas una vez que se accede a esta carpeta .
cmds[1]="'ping 192.168.9.9'"
me da el mismo error pero lo resolví eliminando la comilla simple. Entonces, si escribo cmds[1]="ping 192.168.9.9"
, funciona.
tab=" --tab-with-profile=Default"
??