Devo aprire più schede terminali, assegnare loro i titoli, andare in una directory e far eseguire un comando a ciascuna scheda.
Sono nuovo di Linux e script di shell, dopo aver cercato online e verificato alcune soluzioni, ho creato questo script ( EDITED basato sulle risposte di seguito):
#!/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
Apre le schede, le nomina, ma non esegue i comandi che generano questo errore:
Si è verificato un errore durante la creazione del processo figlio per questo terminale
Un altro difetto è che se ho fermato il comando in esecuzione, si chiude la scheda, che non voglio. Devo essere in grado di interrompere il comando ed eseguirlo nuovamente nella stessa scheda.
Cosa c'è di sbagliato con la sceneggiatura? C'è un altro modo più semplice per farlo?
Nota: se ho rimosso la parte (-e "\" bash -c $ {cmds [i]}; bash \ "") dal comando, si aprono le schede nella directory specificata e li denomino, senza errori.
-Edit-1:
Dopo aver applicato la risposta @Tuknutx di seguito e aver modificato lo script, l'errore non appare più, ma mi dà bash: rails c: command not found
e rails s
crea una nuova app rails invece di avviare il server rails, sto usando .rmvrc per selezionare un gemset una volta che si accede a questa cartella .
cmds[1]="'ping 192.168.9.9'"
mi dà lo stesso errore ma l'ho risolto rimuovendo la singola citazione. Quindi se scrivo cmds[1]="ping 192.168.9.9"
Funziona.
tab=" --tab-with-profile=Default"
??