Otwieranie wielu kart za pomocą gnome-terminal


16

Próbuję utworzyć polecenie, które otworzy 3 usługi ze stosu szyn, szyn, spork i autotestu. Mogę uruchamiać te polecenia indywidualnie, otwierając 3 terminale, przechodząc do folderu aplikacji i uruchamiając je. Mogę nawet otworzyć 3 nowe karty i uruchomić polecenia na każdej z nich.

Problem polega na tym, że zawodzą, gdy próbuję otworzyć karty za pomocą terminalu gnome w następujący sposób:

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

Błąd (w przypadku spork i autotestu):

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

Zaskakujące jest to, że działa w przypadku „szyn s” (zakładka pokazuje uruchomiony serwer).

Jakieś pomysły?

Odpowiedzi:


9

Poniżej znajduje się odpowiedź od stackoverflow.com

  1. Dodaj a eval "$BASH_POST_RC"na końcu swojego .bashrc

  2. Ustaw BASH_POST_RCzmienną środowiskową dla każdej karty na polecenie, które chcesz wykonać, np .: 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

Wywołanie gnome-terminaltrzykrotnie i zestawienie poleceń razem z && nie zadziała, a zakładki nie pojawią się w tym samym terminalu i rzeczywiście będziesz musiał wyjść z pierwszego terminala, aby pojawił się następny.

Aby upewnić się, że wszystkie karty otwierają się jednocześnie w jednym wystąpieniu, gnome-terminalnależy użyć --tab-with-profile=PROFILENAMEprzełącznika. W poniższym poleceniu możesz pozostawić pierwsze polecenie gnome-terminal --tab, ponieważ jest to pierwsze okno do wygenerowania; teraz wszystko, co musisz wiedzieć, to profil, którego używasz, i możesz użyć, --tab-with-profile=YourProfileaby wywołać inne polecenia, a wszystkie pojawią się jednocześnie w otwartym otwartym terminalu.

Oto zmodyfikowane polecenie:

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"

(Dla przyszłych czytelników: zamień nazwy programów podane po, -eaby przetestować podany tutaj wiersz poleceń; pamiętaj, że twoje cele -emuszą być zainstalowane i włączone $PATH; dla rzeczy, które nie są $PATHużywane, bezwzględna ścieżka, taka jak na przykład /opt/mike/program)

Pamiętaj, aby podać rzeczywisty profil, którego używasz dla --tab-with-profileprzełączników. Pierwsze wywołanie gnome-terminalmusi użyć --tabi całą resztę --tab-with-profile. Dzięki tej metodzie powinno być możliwe otwieranie dużej liczby zakładek w jednym przypadku gnome-terminal.

Znajdź profil, którego aktualnie używasz, klikając prawym przyciskiem myszy gnome-terminali spójrz na profile, a na tym, którego aktualnie używasz, pojawi się znacznik:

wprowadź opis zdjęcia tutaj

Przejdź do Preferencji profilu, aby uzyskać więcej informacji i sprawdzić nazwę profilu.

Aby uzyskać więcej informacji, zobacz man gnome-terminali strony internetowe Ubuntu online .


Uwaga :

Jeśli masz problemy z uruchomieniem programów gnome-terminal, dodaj lokalizację $PATHlub utwórz dowiązanie symboliczne i umieść je w $PATHlokalizacji lub (co było bardzo przydatne tutaj): utwórz prosty skrypt otoki basha i wywołaj go w gnome-terminalwierszu poleceń powyżej. (Musisz to nazwać absolutną ścieżką: tzn. /location/of/scriptNie tylko nazwą).

Jako przykład:

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

Następnie nazwij skrypt, zrób go wykonywalnym i wywołaj go w gnome-terminalwierszu poleceń powyżej. Zrób to dla wszystkich problematycznych programów non-repo.


Skąd mam znać profil? (Próbowałem z domyślną, moją nazwą użytkownika i ~ / .profile)
Manuel

Mówi Domyślnie, ale pojawia się ten sam błąd, używając --tab-with-profile = Domyślnie
Manuel

@Manuel Inną możliwością jest to, że poleceń docelowych nie ma w twoim $PATH; określ lokalizację sporki inne z bezwzględną ścieżką.

Polecenie, którego używam to gnome-terminal --tab --title = "rails s" -e "rails s" --tab-with-profile = Domyślnie --title = "spork" -e "spork" - tab-with-profile = Domyślnie --title = "autotest" -e "autotest" (skopiuj / wklej z odpowiedzi). O $ PATH, jeśli to jest problem, to dlaczego działa na karcie otwartej za pomocą menu?
Manuel

@Manuel Jak mówisz w swoim pytaniu, musisz przejść do „folderu aplikacji” i uruchomić je stamtąd, co oznacza, że ​​ich nie ma $PATH. Metodą w odpowiedzi jest metoda, której używam do uruchamiania wszystkich programów wiersza polecenia zainstalowanych w repozytorium na różnych kartach w tym samym gnome-terminaloknie, i zawsze działa, ponieważ te inne programy są w $ PATH.

0

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

ten kod otwiera nową kartę w terminalu z uruchomionym skryptem Pythona, a kiedy się skończy, ta nowa karta nie zostanie zamknięta, ponieważ dodałem „bash” na końcu tego kodu ...

jeśli chcesz go wiele razy, umieść go w pętli while w swoim skrypcie bash

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.