GNOME terminal ile birden çok sekme açma


16

Rails yığını, raylar s, spork ve otomatik test 3 hizmet açılacak bir komut oluşturmaya çalışıyorum. Bu komutları 3 terminal açarak, uygulama klasörüne gidip çalıştırarak ayrı ayrı çalıştırabilirim. Hatta 3 yeni sekme açabilir ve her birinde komutları çalıştırabilirim.

Sorun şu şekilde gnome terminali aracılığıyla sekmeleri açmaya çalıştığınızda başarısız olmasıdır:

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

Hata (spork ve otomatik test için):

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

Şaşırtıcı bir şekilde 'raylar' için çalışır (sekme sunucunun çalıştığını gösterir).

Herhangi bir fikir?

Yanıtlar:


9

Aşağıda stackoverflow.com'dan bir cevap var

  1. Bir ekleme eval "$BASH_POST_RC".bashrc sonuna

  2. BASH_POST_RCHer sekme için ortam değişkenini yürütmek istediğiniz komuta ayarlayın , örneğin: 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"'


15

Çağırma gnome-terminalüç kez ve birlikte komutları çekimi && olmayacak iş ve sekmeler aynı terminalde görünmez ve gerçekten bir sonraki görünmesi için ilk terminali çıkmak zorunda kalacaktır.

Tüm sekmelerinizin gnome-terminalaynı anda hepsinin bir örneğinde açıldığından emin olmanın yolu --tab-with-profile=PROFILENAMEanahtarı kullanmaktır . Aşağıdaki komutta, ilk komutu gnome-terminal --taboluşturulacak ilk pencere gibi bırakabilirsiniz ; Şimdi bilmeniz gereken tek şey hangi profili kullandığınız ve --tab-with-profile=YourProfilediğer komutları çağırmak için kullanabilirsiniz ve hepsi bir kerede açılan orijinal terminalde görünecektir.

Komutunuz değiştirildi:

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"

(Gelecekteki okuyucular için: -eburada verilen komut satırını test etmek için daha sonra verilen program adlarını kullanın; hedeflerinizin -ekurulu ve içeri girilmesi gerektiğini unutmayın $PATH; $PATHörneğin kullanılmayan şeyler için mutlak bir yol gibi /opt/mike/program)

--tab-with-profileAnahtarlar için kullandığınız gerçek profili belirtmeyi unutmayın . İlk çağrışımı gnome-terminalkullanmalı --tabve gerisi --tab-with-profile. Bu yöntemle, aynı örnekte çok sayıda sekme açmak mümkün olmalıdır gnome-terminal.

Şu anda kullanmakta olduğunuz profili sağ tıklayarak bulun ve profillere bakın; şu anda kullandığınız gnome-terminalprofilde bir işaretleyici olacaktır:

resim açıklamasını buraya girin

Daha fazla bilgi ve profilin adını kontrol etmek için Profil tercihleri ​​bölümüne gidin.

Daha fazla bilgi için, bkz. man gnome-terminalVe Ubuntu çevrimiçi yönetimleri .


Not :

Programlarınızı başlatmakla sorun yaşıyorsanız gnome-terminal, konumu ekleyin $PATHveya bir sembolik bağlantı oluşturun ve bir $PATHkonuma yerleştirin veya (burada çok faydalı olan) basit bir bash sarmalayıcı komut dosyası oluşturun ve gnome-terminalyukarıdaki komut satırında arayın . (Mutlak bir yolla çağırmalısınız: yani /location/of/script, sadece adı değil.)

Örnek olarak:

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

Sonra komut dosyasını adlandırın, yürütülebilir yapın ve gnome-terminalyukarıdaki komut satırından çağırın . Bunu sorunlu tüm repo olmayan programlar için yapın.


Profili nasıl bilebilirim? (Default, kullanıcı adım ve ~ / .profile ile denedim)
Manuel

Varsayılan diyor ama aynı hatayı --tab-with-profile = Varsayılan
Manuel

@Manuel Diğer olasılık, hedef komutların $PATH , konumunun sporkve diğerlerinin mutlak yol ile belirtilmesidir.

Kullandığım komut gnome-terminali --tab --title = "rails s" -e "rails s" --tab-with-profile = Varsayılan --title = "spork" -e "spork" - tab-with-profile = Varsayılan --title = "otomatik test" -e "otomatik test" (cevabınızdan kopyala / yapıştır). $ PATH hakkında, bu sorun varsa neden menü aracılığıyla açılan bir sekmede çalışır?
Manuel

@Manuel Sorunuzda söylediğiniz gibi, "uygulama klasörüne" gitmeniz ve oradan çalıştırmanız gerekiyor, yani $PATH . Yanıttaki yöntem, aynı gnome-terminalpencerede farklı sekmelerdeki tüm depo yüklü komut satırı programlarını başlatmak için kullandığım yöntemdir ve diğer programlar $ PATH'da olduğu için her zaman çalışır.

0

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

Bu kod bir python komut dosyası çalıştıran terminalde yeni sekme açın ve bittiğinde, bu yeni sekme kapanmayacaktır, çünkü bu kodun sonuna 'bash' ekledim ...

birden fazla kez isterseniz, bash komut dosyanızda bir while döngüsüne koyun

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.