Saya perlu membuka banyak tab terminal, memberi mereka judul, pergi ke direktori, dan membuat setiap tab menjalankan perintah.
Saya baru mengenal Linux dan skrip shell, setelah mencari secara online dan memeriksa beberapa solusi, saya membuat skrip ini ( Diedit berdasarkan jawaban di bawah):
#!/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
Ini membuka tab, menamai mereka, tetapi gagal menjalankan perintah yang menghasilkan kesalahan ini:
Terjadi kesalahan saat membuat proses anak untuk terminal ini
Kelemahan lain adalah bahwa jika saya menghentikan perintah yang sedang berjalan itu menutup tab, yang saya tidak mau. Saya harus dapat menghentikan perintah dan menjalankannya lagi di tab yang sama.
Apa yang salah dengan skrip? Apakah ada cara lain yang lebih sederhana untuk melakukan itu?
Catatan: Jika saya menghapus bagian (-e "\" bash -c $ {cmds [i]}; bash \ "") dari perintah, ia membuka tab di direktori yang diberikan dan menamainya, tanpa kesalahan.
-Edit-1:
Setelah menerapkan @Tuknutx jawaban di bawah ini dan mengedit skrip, kesalahan tidak muncul lagi, tetapi itu memberi saya bash: rails c: command not found
dan rails s
membuat aplikasi rel baru alih-alih memulai server rel, saya menggunakan .rmvrc untuk memilih permata setelah folder ini diakses .
cmds[1]="'ping 192.168.9.9'"
itu memberi saya kesalahan yang sama tetapi saya menyelesaikannya dengan menghapus kutip tunggal. Jadi jika saya tulis cmds[1]="ping 192.168.9.9"
itu berfungsi.
tab=" --tab-with-profile=Default"
??