Muszę otworzyć wiele kart terminali, nadać im tytuły, przejść do katalogu i sprawić, by każda karta uruchomiła polecenie.
Jestem nowy w Linuksie i skryptach powłoki, po przeszukaniu Internetu i sprawdzeniu niektórych rozwiązań, stworzyłem ten skrypt ( EDYTOWANY na podstawie poniższych odpowiedzi):
#!/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
Otwiera karty, nazywa je, ale nie wykonuje poleceń generujących ten błąd:
Wystąpił błąd podczas tworzenia procesu potomnego dla tego terminala
Kolejną wadą jest to, że jeśli zatrzymam uruchomione polecenie, zamyka kartę, czego nie chcę. Muszę być w stanie zatrzymać polecenie i uruchomić je ponownie w tej samej zakładce.
Co jest nie tak ze skryptem? Czy istnieje inny prostszy sposób to zrobić?
Uwaga: Jeśli usunę część (-e "\" bash -c $ {cmds [i]}; bash \ "") z polecenia, otwiera zakładki w danym katalogu i nadaje im nazwy, bez błędów.
-Edytuj-1:
Po zastosowaniu poniższej odpowiedzi @Tuknutx i edycji skryptu błąd już się nie pojawia, ale daje mi bash: rails c: command not found
i rails s
tworzy nową aplikację railsową zamiast uruchamiania serwera, używam .rmvrc do wybrania zestawu gem po uzyskaniu dostępu do tego folderu .
cmds[1]="'ping 192.168.9.9'"
, pojawia się ten sam błąd, ale rozwiązałem go, usuwając pojedynczy cytat. Więc jeśli napiszę, cmds[1]="ping 192.168.9.9"
to działa.
tab=" --tab-with-profile=Default"
?