Membuka banyak tab dengan terminal gnome

16

Saya mencoba membuat perintah yang akan membuka 3 layanan dari tumpukan Rails, rails s, spork, dan autotest. Saya dapat menjalankan perintah ini satu per satu dengan membuka 3 terminal, pergi ke folder aplikasi dan menjalankannya. Saya bahkan dapat membuka 3 tab baru dan menjalankan perintah pada masing-masing.

Masalahnya adalah mereka gagal ketika saya mencoba membuka tab melalui terminal gnome seperti:

gnome-terminal --tab --title="rails s" -e "rails s" --tab --title="spork" -e "spork" --tab --title="autotest" -e "autotest"

Kesalahan (untuk spork dan autotest):

There was an error creating the child process for this terminal
Failed to execute child process "spork" (No such file or directory)

Anehnya itu bekerja untuk 'rails' (tab menunjukkan server berjalan).

Ada ide?

Manuel
sumber

Jawaban:

9

Di bawah ini adalah jawaban dari stackoverflow.com

  1. Tambahkan a eval "$BASH_POST_RC"ke akhir .bashrc Anda

  2. Setel BASH_POST_RCvariabel lingkungan untuk setiap tab ke perintah yang ingin Anda jalankan, misalnya: gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'

hijau
sumber
15

Memanggil gnome-terminaltiga kali dan merangkai perintah bersama && tidak akan berfungsi, dan tab tidak akan muncul di terminal yang sama, dan memang Anda harus keluar dari terminal pertama untuk selanjutnya muncul.

Cara untuk memastikan semua tab Anda terbuka dalam satu contoh gnome-terminalsemua sekaligus adalah dengan menggunakan --tab-with-profile=PROFILENAMEsakelar. Pada perintah di bawah ini Anda dapat meninggalkan perintah pertama gnome-terminal --tabkarena itu adalah jendela pertama yang dihasilkan; sekarang yang perlu Anda ketahui adalah profil mana yang Anda gunakan dan Anda dapat menggunakan --tab-with-profile=YourProfileuntuk memanggil perintah lain dan semuanya akan muncul sekaligus di terminal asli yang dibuka.

Ini perintah Anda yang dimodifikasi:

gnome-terminal --tab --title="rails s" -e "rails s" --tab-with-profile=Default --title="spork" -e "spork" --tab-with-profile=Default --title="autotest" -e "autotest"

(Untuk pembaca masa depan: gantilah nama program yang diberikan setelahnya -euntuk menguji baris perintah yang diberikan di sini; ingat target Anda untuk -eharus diinstal dan masuk $PATH; untuk hal-hal yang tidak $PATHdigunakan jalur absolut seperti, misalnya,/opt/mike/program )

Ingatlah untuk menentukan profil aktual yang Anda gunakan untuk --tab-with-profilesakelar. Doa pertama gnome-terminalharus digunakan --tabdan sisanya --tab-with-profile. Dengan metode ini, harus dimungkinkan untuk membuka banyak tab semua dalam contoh yang sama gnome-terminal.

Temukan profil yang sedang Anda gunakan dengan mengklik kanan gnome-terminaldan melihat profil dan akan ada penanda yang Anda gunakan saat ini:

masukkan deskripsi gambar di sini

Buka Preferensi profil untuk informasi lebih lanjut dan untuk memeriksa nama profil.

Untuk informasi lebih lanjut, lihat man gnome-terminaldan manual Ubuntu online .


Catatan :

Jika Anda mengalami masalah saat meluncurkan program gnome-terminal, tambahkan lokasi $PATH, atau buat symlink dan letakkan di $PATHlokasi, atau (yang sangat berguna di sini): buat skrip wrapper bash sederhana dan panggil di gnome-terminalbaris perintah di atas. (Anda harus menyebutnya dengan jalur absolut: yaitu /location/of/script, bukan hanya nama saja.)

Sebagai contoh:

#!/bin/bash
cd $HOME/.rvm/gems/ruby-2.0.0-p0/bin 
spork
exit 0

Kemudian beri nama skrip, buatlah itu dapat dieksekusi dan panggil di gnome-terminalbaris perintah di atas. Lakukan ini untuk semua program non-repo yang bermasalah.

pencuci mulut
sumber
Bagaimana saya tahu profilnya? (Saya mencoba dengan Default, nama pengguna saya, dan ~ /. Profil)
Manuel
Dikatakan Default tapi saya mendapatkan kesalahan yang sama menggunakan --tab-with-profile = Default
Manuel
@Manuel Kemungkinan lainnya adalah perintah target tidak ada di Anda $PATH, tentukan lokasi sporkdan yang lainnya dengan jalur absolut.
Perintah yang saya gunakan adalah gnome-terminal --tab --title = "rails s" -e "rails s" --tab-with-profile = Default --title = "spork" -e "spork" - tab-with-profile = Default --title = "autotest" -e "autotest" (salin / tempel dari jawaban Anda). Tentang $ PATH, jika ini masalahnya, mengapa ia bekerja pada tab yang dibuka melalui menu?
Manuel
@Manuel Seperti yang Anda katakan dalam pertanyaan Anda, Anda harus pergi ke "folder aplikasi" dan menjalankannya dari sana, yang berarti mereka tidak ada $PATH. Metode dalam jawabannya adalah yang saya gunakan untuk meluncurkan semua program baris perintah yang diinstal repositori di berbagai tab di gnome-terminaljendela yang sama , dan selalu berfungsi, karena program-program lain itu dalam $ PATH.
0

gnome-terminal --tab -- sh -c "python3 'test.py' ; bash"

kode ini membuka tab baru di terminal yang menjalankan skrip python dan ketika selesai, tab baru ini tidak akan ditutup, karena saya menambahkan 'bash' di akhir kode ini ...

jika Anda menginginkannya berkali-kali, masukkan ke dalam loop sementara di skrip bash Anda

Joao Vitor Deon
sumber